我正在学习Linux Shell脚本并学习流程控制
我坚持使用这个简单的脚本:
#!/bin/bash
x=2
if [ $x=5 ]; then
echo "x equals 5."
else
echo "x does not equal 5."
fi
执行命令时,我在终端上得到的唯一响应是:x等于5.
有人可以帮我在我的代码中找到错误吗?
提前致谢。
答案 0 :(得分:3)
$x=5
是一个字符串,解释为"2=5"
,它不为零,因此是真的。
$x = 5
是两个字符串,它们之间是字符串相等运算符,并且计算结果为false。
然而,这有点不安全,因为理论上$x
可能是空的,在这种情况下你得到不合语法的测试= 5
;安全变体是"$x" = 5
。
如果您需要比较数字,请使用-eq
代替=
。例如,05 = 5
为false,但05 -eq 5
为真。
答案 1 :(得分:1)
答案 2 :(得分:0)
请换行
if [ $x=5 ]; then
至if [ $x = 5 ]; then
。
评估需要空格。
执行
$ sh sample.sh
x does not equal 5.
答案 3 :(得分:0)
您首先需要找出您实际谈论的shell。如果你使用基本的POSIX shell(/ bin / sh)语法,那么if的基本形式是调用程序并评估它的返回代码。有一个特殊程序test
,别名为[
表达式。但是这个程序要求表达式的所有部分都是不同的参数,因此你必须在[,$ x,=和5之前和之后放置空格。