if语句的一个疑问
- b33e
- 帖子: 3864
- 注册时间: 2011-06-07 14:20
- 系统: Mint18
-
- 帖子: 5
- 注册时间: 2015-09-06 17:19
- 系统: Ubuntu
Re: if语句的一个疑问
可是我在Ubuntu下面执行,结果不一样啊
b33e 写了:你这写的一模一样
注意全角和半角,应该是"abc"
-
- 帖子: 5
- 注册时间: 2015-09-06 17:19
- 系统: Ubuntu
Re: if语句的一个疑问
可以参照这个图片[img]/home/caixiaodong/桌面/Test/2015-09-10%2009:28:15%20的屏幕截图.png[/img]
/home/caixiaodong/桌面/Test/2015-09-10 09:28:15 的屏幕截图.png
/home/caixiaodong/桌面/Test/2015-09-10 09:28:15 的屏幕截图.png
- HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
-
- 帖子: 5
- 注册时间: 2015-09-06 17:19
- 系统: Ubuntu
Re: if语句的一个疑问
英文看不懂啊,能不能简单的说下。谢啦!HuntXu 写了:man test看,等号左右两边的空格是不能省的
#! /bin/bash
str1="abc"
if [ $str1="efg" ]
then
echo "OK"
else
echo "NG"
fi
为什么输出OK,不输出NG
-
- 论坛版主
- 帖子: 18279
- 注册时间: 2009-08-04 16:33
Re: if语句的一个疑问
等号左右两边的空格是不能省的
字串
有空格
沒空格
一樣嗎
查一下
-
- 帖子: 4
- 注册时间: 2015-09-23 9:26
Re: if语句的一个疑问
使用[]代替test时,正如 poloshiao所言,等号两边的空格是不能少的。
至于为什么
会输出OK,我的理解如下(给大家做个参考,也不知是否正确):
[ $str1="efg" ] 被解释为test $str1="efg",即测试指令abc="efg"是否正确运行。
给变量abc赋值"efg",显然是能够执行成功的,所以输出OK。
至于为什么
代码: 全选
#! /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。
- astolia
- 论坛版主
- 帖子: 6396
- 注册时间: 2008-09-18 13:11
Re: if语句的一个疑问
你的理解是错误的。[和test作为bash的内建命令,后面的参数abc="efg"并不解释为变量赋值,仅仅是一个普通的字符串,只要非空就为真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。
请自行阅读bash的manpage:
http://www.gnu.org/software/bash/manual ... xpressions