设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
shell进阶应用、shell编程
›
请教测试时加引号和不加引号的区别
1
2
/ 2 页
下一页
返回列表
查看:
1256
|
回复:
10
请教测试时加引号和不加引号的区别
[复制链接]
zhulei5
zhulei5
当前离线
积分
30
IP卡
狗仔卡
发表于 2007-9-21 16:27:26
|
显示全部楼层
|
阅读模式
脚本内容如下:
if [ -n $xyz ]
then
echo "xyz is true."
else
echo "xyz is false."
fi
if [ -n "$xyz" ]
then
echo "quote(xyz) is true."
else
echo "quote(xyz) is false."
fi
exit 0
为何运行结果不加引号的为真,加引号的为假?
如果在脚本的最上面添加上
xyz=
的赋值语句,结果也是一样的。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
sunnyseckt
sunnyseckt
当前离线
积分
299
IP卡
狗仔卡
发表于 2007-9-21 20:18:00
|
显示全部楼层
我判断空串一般用-z,-n则很少用也不敢乱解释,建议你找本shell的教程读读吧。
回复
支持
反对
使用道具
举报
显身卡
Iambitious
Iambitious
当前离线
积分
339
IP卡
狗仔卡
发表于 2007-9-22 09:10:42
|
显示全部楼层
我试了一下也是这样,不过abs给的标准的例题就是用""来测试的。
回复
支持
反对
使用道具
举报
显身卡
jery
jery
当前离线
积分
4
IP卡
狗仔卡
发表于 2007-9-22 23:51:55
|
显示全部楼层
没错啊。一般都用加“”这个来测试吧。
回复
支持
反对
使用道具
举报
显身卡
seamonkey
seamonkey
当前离线
积分
2746
IP卡
狗仔卡
发表于 2007-9-23 15:10:56
|
显示全部楼层
[[保留词就不需要引用。如果不考虑可移植性,[[比较不容易出错。
回复
支持
反对
使用道具
举报
显身卡
Jockey
Jockey
当前离线
积分
2694
IP卡
狗仔卡
发表于 2007-9-23 15:16:58
|
显示全部楼层
好奇怪啊,bash手册页中对于条件判断的 -z 和 -n 就是简单的几行:
-z string
True if the length of string is zero.
string
-n string
True if the length of string is non-zero.
复制代码
既然这两个解释是互为否的,那为什么会在相同测试下的结果出现不对称呢?
回复
支持
反对
使用道具
举报
显身卡
seamonkey
seamonkey
当前离线
积分
2746
IP卡
狗仔卡
发表于 2007-9-23 15:23:40
|
显示全部楼层
[ -z ] && echo True
[ -n ] && echo True
??
回复
支持
反对
使用道具
举报
显身卡
seamonkey
seamonkey
当前离线
积分
2746
IP卡
狗仔卡
发表于 2007-9-23 15:56:13
|
显示全部楼层
应该是这么解释吧
[, test (最早是外部命令,现在内置,外部也保留,两者表现是一样的),test -n测试nonzero string,是期待后面跟参数的。当$xzy为空时, [ -n "$xzy" ]扩展为[ -n "" ],是空字符串,语法是正确的,而[ -n $xyz ]扩展为[ -n ],也就是没有参数。有些shell会出现语法错误,test: argument expected.
回复
支持
反对
使用道具
举报
显身卡
seamonkey
seamonkey
当前离线
积分
2746
IP卡
狗仔卡
发表于 2007-9-23 16:08:09
|
显示全部楼层
最新的bash, zsh, (可能ksh93, pdksh也是一样) 无论$xyz为空还是unset,返回值总是0,所以一定要加双引号。
回复
支持
反对
使用道具
举报
显身卡
huzhe
huzhe
当前离线
积分
187
IP卡
狗仔卡
发表于 2007-9-23 20:57:50
|
显示全部楼层
同意 ,在判断字符变量是否为空,是一定要加双引号的。
回复
支持
反对
使用道具
举报
显身卡
下一页 »
1
2
/ 2 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
服务器架设、应用、维护
BSD 讨论专题
硬件设备 Linux 驱动
Mandriva Linux
Redhat/Fedora/CentOS Linux
Archlinux讨论区
SuSE Linux
Debian Linux
Slackware Linux
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表