簡體   English   中英

在Shell腳本中捕獲失敗

[英]Catch failure in shell script

Shell腳本新手。 我正在嘗試執行以下操作:

#!/bin/bash

unzip myfile.zip

#do stuff if unzip successful

我知道我可以將命令與&&鏈接在一起,但是有很大一部分,這是很難維護的。

您可以在測試中顯式使用命令的退出狀態:

if ! unzip myfile.zip &> /dev/null; then
    # handle error
fi

您可以使用$? 它返回:
-如果命令成功執行,則為0。
-!0,如果命令失敗。

所以你可以做

#!/bin/bash

unzip myfile.zip

if [ "$?" -eq 0 ]; then
    #do stuff on unzip successful
fi

測試

$ cat a
hello
$ echo $?
0
$ cat b
cat: b: No such file or directory
$ echo $?
1

變量$? 包含上一條命令的退出狀態。 (大多數)命令的成功退出狀態(通常)是0,因此只需檢查一下...

#!/bin/bash
unzip myfile.zip

if [ $? == 0 ]
then
    # Do something
fi

如果希望外殼程序檢查已執行命令的結果並在某些內容返回非零值時停止解釋,則可以添加set -e ,這意味着如果命令以非零狀態退出,則立即退出。 我經常在腳本中使用它。

#!/bin/sh

set -e

# here goes the rest

暫無
暫無

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

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