Ale*_*lls 3 bash shell-script test
如果我运行这个:
#!/usr/bin/env bash
simple_return_zero(){
return 0;
}
simple_return_one(){
return 1;
}
if [ simple_return_zero ]; then
echo "we have 0000";
fi
if [ ! simple_return_zero ]; then
echo "we have not 00000";
fi
if [ simple_return_one ]; then
echo "we have 11111";
fi
if [ ! simple_return_one ]; then
echo "we have not 11111";
fi
Run Code Online (Sandbox Code Playgroud)
我得到:
we have 0000
we have 11111
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码是错误的,我认为这是正确的方法:
if simple_return_zero; then
echo "we have 0000";
fi
if ! simple_return_zero; then
echo "we have not 00000";
fi
if simple_return_one; then
echo "we have 11111";
fi
if ! simple_return_one; then
echo "we have not 11111";
fi
Run Code Online (Sandbox Code Playgroud)
现在我们得到了更令人期待的东西:
we have 0000
we have not 11111
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 为什么测试命令 ( [ ] ) 在这种情况下不起作用?测试命令不检查退出代码/返回代码吗???