kit*_*ang 10 bash shell ubuntu
在bash脚本中
if [ 1 ]
then
echo "Yes"
else
echo "No"
fi
Run Code Online (Sandbox Code Playgroud)
输出: Yes
它表示'1'被视为真值.
但在代码中:
word = Linux
letter = nuxi
if echo "$word" | grep -q "$letter"
then
echo "Yes"
else
echo "No"
fi
Run Code Online (Sandbox Code Playgroud)
输出:没有
但是No会返回1,为什么结果是否
关键字如何echo "$word" | grep -q "$letter"测试命令返回的值后No?
Lek*_*eyn 13
检查命令的返回值.[ 1 ]的返回值为0(true).任何其他返回值(如1)表示错误.
您可以使用$?变量显示上次执行的命令的返回值:
true
echo $?
# returned 0
false
echo $?
# returned 1
echo $?
# returned 0 as the last executed command is 'echo', and not 'false'
Run Code Online (Sandbox Code Playgroud)
在unix land中,0为真,1为假.
第一个例子:
if [ 1 ]
then
echo "Yes"
else
echo "No"
fi
Run Code Online (Sandbox Code Playgroud)
"If"检查给定命令的退出代码是否为true/false(即零/非零).
方括号实际上调用了"test"命令(有关更多信息,请参阅"man test")并将退出代码提供给if.
"test 1"(或实际上"test any_string")返回true(0),因此输出"Yes".
对于你的第二个例子,这输出"No",因为在"Linux"中找不到"nuxi",如果你将"nuxi"改为"nux"(也许这是一个错字?)并删除=周围的空格然后你会得到你期望的行为.例如
word=Linux
letter=nux
if echo "$word" | grep -q "$letter"
then
echo "Yes"
else
echo "No"
fi
Run Code Online (Sandbox Code Playgroud)