我现在正在学习 shell 脚本。不管怎样,我运行下面的程序。
#!/bin/bash
sudo rmmod my_driver
make clean
make
sudo insmod my_driver.ko // return value is 0
var=$?
if [ $var ];
then
echo " $var, not done!!"
else
echo " $var, done!!"
fi
输出是,
...
make[1]: Leaving directory `/usr/src/kernels/2.6.32-431.11.2.el6.x86_64'
0, not done!!
在 C 语言中(我相信任何语言),如果 if
条件返回 false
它将执行 else
block 。
I tried below conditions too, but I faced same problem
if [ "$var" ]
if [ "$var" -eq "0" ]
if [ $var -eq 0 ]
if [ $? ]
为什么它不执行 else
block ?
如何为 if [ 0 ]
执行 else
block ?
最佳答案
将 任何 字符串传递给 test
命令,即 [
,将会成功。所以
if [ 0 ]
相当于
if [ 1 ]
或
if [ foobar ]
您可以改用算术上下文,并说:
if ((var)); then
或者,使用 test
命令作为:
if [ $var -eq 0 ]; then
关于bash - 如果 [ 0 ] 返回真。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23426497/