function foo {
(cd $FOOBAR;
<some command>
if [$? -ne 0]
then
echo "Nope!"
else
echo "OK!"
fi
)
}
我正在尝试编写类似上面的函数,并将其放在我的.bashrc文件中。在获取文件并运行后,我得到:
总时间:51秒-重
击:[1:找不到命令
!
有人可以帮助我了解我做错了什么吗?
$?保留最后一个管道的状态,该状态不是语句中的test([)命令if。该示例正在测试是否some command成功。您可以使用&&和进行相同的操作||,但是与相比,它可以使行长且难以理解if [ $? -eq 0 ]。同样的观点也适用于if some command
$?扩展到什么,我指出test被使用毫无意义;因为if some command使用一个语句而不是使用两个单独的语句可以完成相同的操作。如果命令已经很长,再添加三个字符不会使“不可读”变得更加“不可读”。
$?用一条if语句测试if 是否等于0 是没有意义的,if需要一个命令,如果该命令返回0,它将在块中运行代码。if true; then echo hello; fi因为命令true返回,所以会回声你好0。