gan*_*ars 2 bash shell if-statement
我现在正在学习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
Run Code Online (Sandbox Code Playgroud)
输出是,
...
make[1]: Leaving directory `/usr/src/kernels/2.6.32-431.11.2.el6.x86_64'
0, not done!!
Run Code Online (Sandbox Code Playgroud)
在C语言中(我相信任何语言),如果if
条件返回false
它将执行else
块.
I tried below conditions too, but I faced same problem
if [ "$var" ]
if [ "$var" -eq "0" ]
if [ $var -eq 0 ]
if [ $? ]
Run Code Online (Sandbox Code Playgroud)
为什么它不执行else
块?我该怎么执行else
block if [ 0 ]
?
将任何字符串传递给test
命令,即[
成功.所以
if [ 0 ]
Run Code Online (Sandbox Code Playgroud)
相当于
if [ 1 ]
Run Code Online (Sandbox Code Playgroud)
要么
if [ foobar ]
Run Code Online (Sandbox Code Playgroud)
您可以使用算术上下文,并说:
if ((var)); then
Run Code Online (Sandbox Code Playgroud)
或者,使用以下test
命令:
if [ $var -eq 0 ]; then
Run Code Online (Sandbox Code Playgroud)