Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để ngăn chặn đầu ra và kiểm tra xem một lệnh có thành công hay không?

Cập nhật :

  • if ($LASTEXITCODE -eq 0) ... phương pháp tiếp cận sẽ tiếp tục hoạt động hiệu quả với các chương trình bên ngoài.
  • Tuy nhiên, nếu và khi phiên bản trước v7.2 tính năng thử nghiệm được đặt tên là PSNotApplyErrorActionToStderr trở thành một tính năng chính thức, if ($?) ... cũng sẽ hoạt động mạnh mẽ - hãy xem câu trả lời này để biết thêm thông tin.

Sử dụng $LASTEXITCODE -eq 0 thay vì $? để phát hiện một cách đáng tin cậy mã thoát khác không (thường là lỗi báo hiệu) do chương trình bên ngoài báo cáo.

Sau đó, bạn có thể sử dụng *> $null để loại bỏ tất cả đầu ra mà không phải lo lắng về tác động của việc chuyển hướng đó đối với $? :

mysql -u root --password=mypass -e "show databases" *>$null
if ($LASTEXITCODE -eq 0) {
  "Hooray!"
} else {
  "Boo!"
}

Sử dụng chuyển hướng liên quan đến luồng lỗi của PowerShell - rõ ràng qua 2> hoặc ngầm định qua *> - có nghĩa là nếu bất kỳ dữ liệu nào được nhận qua luồng đó - trong trường hợp gọi chương trình bên ngoài có nghĩa là bất kỳ đầu ra nào từ stderr - Bộ PowerShell $? thành $false .

Tuy nhiên, trong lĩnh vực của các chương trình bảng điều khiển / thiết bị đầu cuối bên ngoài, stderr không chỉ được sử dụng để xuất ra error thông tin, nhưng bất kỳ thông tin nào không phải là dữ liệu , chẳng hạn như thông tin trạng thái. Do đó, bạn không thể suy ra thất bại khi có đầu ra stderr .

Các chương trình bảng điều khiển / thiết bị đầu cuối bên ngoài thông báo trạng thái thành công của chúng chỉ thông qua mã thoát , PowerShell phản ánh trong $LASTEXITCODE tự động biến.

Nó theo sau $? ở trên có thể là $false ngay cả khi mã thoát là 0 , vì vậy nó không phải là một chỉ báo thành công đáng tin cậy - không giống như $LASTEXITCODE .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thực hiện di chuyển trong laravel 5.5?

  2. tải xuống các giá trị của bảng sql để sử dụng lại ngoại tuyến

  3. Khóa ngoại MySQL

  4. mysql cte. sử dụng với và chèn nó cảnh báo lỗi cú pháp

  5. Làm thế nào để ngăn chặn mysqld