Linux shell 脚本检查命令是否成功

Linux shell 脚本检查命令是否成功

我需要检查执行的命令是否成功,我已将以下代码放入 test.sh 中运行它,它通过列出内容给出/home但有警告

./test.sh: 3: ./test.sh: [[: not found

下面的命令有什么问题

#!/bin/sh
ls /home/
if [[ "$?" != 0 ]]; then
echo "Commnad Error"
else
echo "Commnad Success"
fi

答案1

根据错误:

./test.sh: 3: ./test.sh: [[: not found

你的/bin/sh不是特定bash[[bash 的。使用单括号[test单独使用命令。
也可用于-ne数字条件。!=将适用于您的具体情况,但这是不好的做法。

答案2

错误位于if [[ "$?" != 0 ]]; then

数字比较不是使用!=而是-ne应该使用的。

阅读此处进行数值比较

此外,最后执行的命令退出代码的状态的正确语法是$?不带引号的。

if [[ $? -ne 0 ]]; then

答案3

我猜你正在用来dash执行脚本,因为它/bin/sh是一个link,所以你可以bash像那样使用#!/bin/bash警告

答案4

达世币没有[[,只有[。但即使有了[,也有理由if your_command 选择your_command; if [ $? = 0 ]。 (前者更直接、更快,并且能够适应set -e模式中的故障)。

相关内容