分页: 1 / 1
if语句的一个疑问
发表于 : 2015-09-09 21:17
由 晓夜寻梦
if [ ${str1} = “abc" ] 和 if [ ${str1}=“abc" ]有什么却别,大神们,帮下忙,谢啦
Re: if语句的一个疑问
发表于 : 2015-09-09 22:27
由 b33e
空格没注意
注意全角和半角,应该是"abc"
Re: if语句的一个疑问
发表于 : 2015-09-10 9:10
由 晓夜寻梦
可是我在Ubuntu下面执行,结果不一样啊
b33e 写了:你这写的一模一样
注意全角和半角,应该是"abc"
Re: if语句的一个疑问
发表于 : 2015-09-10 9:33
由 晓夜寻梦
可以参照这个图片[img]/home/caixiaodong/桌面/Test/2015-09-10%2009:28:15%20的屏幕截图.png[/img]
/home/caixiaodong/桌面/Test/2015-09-10 09:28:15 的屏幕截图.png
Re: if语句的一个疑问
发表于 : 2015-09-10 9:50
由 HuntXu
man test看,等号左右两边的空格是不能省的
Re: if语句的一个疑问
发表于 : 2015-09-10 10:27
由 晓夜寻梦
HuntXu 写了:man test看,等号左右两边的空格是不能省的
英文看不懂啊,能不能简单的说下。谢啦!
#! /bin/bash
str1="abc"
if [ $str1="efg" ]
then
echo "OK"
else
echo "NG"
fi
为什么输出OK,不输出NG
Re: if语句的一个疑问
发表于 : 2015-09-10 11:55
由 poloshiao
等号左右两边的空格是不能省的
字串
有空格
沒空格
一樣嗎
查一下
Re: if语句的一个疑问
发表于 : 2015-09-23 10:43
由 Russell_D_Lee
使用[]代替test时,正如
poloshiao所言,等号两边的空格是不能少的。
至于为什么
代码: 全选
#! /bin/bash
str1="abc"
if [ $str1="efg" ]
then
echo "OK"
else
echo "NG"
fi
会输出OK,我的理解如下(给大家做个参考,也不知是否正确):
[ $str1="efg" ] 被解释为test $str1="efg",即测试指令abc="efg"是否正确运行。
给变量abc赋值"efg",显然是能够执行成功的,所以输出OK。
Re: if语句的一个疑问
发表于 : 2015-09-24 11:57
由 astolia
Russell_D_Lee 写了:使用[]代替test时,正如
poloshiao所言,等号两边的空格是不能少的。
至于为什么
代码: 全选
#! /bin/bash
str1="abc"
if [ $str1="efg" ]
then
echo "OK"
else
echo "NG"
fi
会输出OK,我的理解如下(给大家做个参考,也不知是否正确):
[ $str1="efg" ] 被解释为test $str1="efg",即测试指令abc="efg"是否正确运行。
给变量abc赋值"efg",显然是能够执行成功的,所以输出OK。
你的理解是错误的。[和test作为bash的内建命令,后面的参数abc="efg"并不解释为变量赋值,仅仅是一个普通的字符串,只要非空就为真
请自行阅读bash的manpage:
http://www.gnu.org/software/bash/manual ... xpressions