簡體   English   中英

bash腳本本身是否具有返回碼?

[英]Does a bash script have return code itself?

我知道返回代碼將包含在$? 執行命令后,但是$? 腳本執行后意味着什么? 該腳本中最后一個命令的返回碼?

我能否說一句腳本是從頭到尾執行的,並且沒有因意外的系統停止或其他原因而中斷?

如果我有下面這樣的腳本,

Command A;
if [ $? -eq 0]
then
echo "OK" >> log
else
echo "failed" >> log
fi

並且在A運行時系統停止運行,我將在該日志文件中找到什么? “確定”,“失敗”還是什么?

  1. 是,或者exit后傳遞的值,例如exit 31

  2. 並非沒有在其他腳本中采取措施使其明確。

$? 讀取最后執行的命令的退出狀態。 函數返回后,$? 給出函數中最后執行的命令的退出狀態。 這是Bash為函數賦予“返回值”的方法。

#!/bin/bash

echo hello
echo $?    # Exit status 0 returned because command executed successfully.

lskdf      # Unrecognized command.
echo $?    # Non-zero exit status returned because command failed to execute.

echo

exit 113   # Will return 113 to shell.
       # To verify this, type "echo $?" after script terminates.

#  By convention, an 'exit 0' indicates success,
#+ while a non-zero exit value means an error or anomalous condition

腳本的返回碼確實是最后執行的命令的返回碼,有些命令允許您隨時完成執行並任意設置返回碼; 它們是腳本的exit ,函數的return ,但是在兩種情況下,如果省略參數,它們將僅使用上一個命令的返回碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM