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
。