我需要检查执行的命令是否成功,我已将以下代码放入 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
模式中的故障)。