[英]Does a bash script have return code itself?
我知道返回代碼將包含在$?
執行命令后,但是$?
腳本執行后意味着什么? 該腳本中最后一個命令的返回碼?
我能否說一句腳本是從頭到尾執行的,並且沒有因意外的系統停止或其他原因而中斷?
如果我有下面這樣的腳本,
Command A;
if [ $? -eq 0]
then
echo "OK" >> log
else
echo "failed" >> log
fi
並且在A
運行時系統停止運行,我將在該日志文件中找到什么? “確定”,“失敗”還是什么?
是,或者exit
后傳遞的值,例如exit 31
。
並非沒有在其他腳本中采取措施使其明確。
$? 讀取最后執行的命令的退出狀態。 函數返回后,$? 給出函數中最后執行的命令的退出狀態。 這是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.