shell编程if,test命令,请问我的理解错在哪里了?

#!/bin/bash#4.10.shiftest-z$1thenecho'pleaseinputafilename'elseiftest-w$1thenecho"wri... #!/bin/bash
#4.10.sh
if test -z $1
then echo 'please input a file name'
else
if test -w $1
then echo "writeable"
else
echo "unwriteable"
fi
if test -x $1
then echo "excuteable"
else
echo "unexcuteable"
fi
fi
上面的意思不是test命令测试没有输入文件名时的时候输出please input a file name
那下面不应该是测试文件不可写时输出writeable
展开
 我来答
o06v90o
2011-08-19
知道答主
回答量:10
采纳率:0%
帮助的人:10.8万
展开全部
书上这么写,是为了保持书写的风格一致。
你疑惑的是为什么他的编写逻辑风格不一致。
没有谁对谁错,如果你非想要先判断文件不存在,加一个!
if `!(test -w $1)`
if `!(test -x $1)`
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2011-08-14 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6442万
展开全部
if test -z $1
then echo 'please input a file name' ; exit #加个退出
else
。。。
不然, if test -x $1 会错报
追问
我在Linux下学shell没有报错(书上的),执行一切正常,我是不明白他的意思,为什么看起来语法一样,而第一个是没有文件输出please..第二个却不是不可写输出write..
追答
哦,不好意思,我理解错了。这段shell代码没有问题。
test命令:
-z string 如果string长度为0返回真值
-w file 如果file文件可写返回真值
-x file 如果file文件可执行返回真值
你的shell先检查是否有参数文件输入,如果没有(if test -z $1)提示'please input a file name'
否则,先检查文件是否可写,再检查文件是否可执行。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鸟诗跑9395
2018-08-09 · 贡献了超过284个回答
知道答主
回答量:284
采纳率:0%
帮助的人:22.9万
展开全部
鹧鸪天·醉拍春衫惜旧香

宋代:晏几道

醉拍春衫惜旧香。天将离恨恼疏狂。年年陌上生秋草,日日楼中到夕阳。
云渺渺,水茫茫。征人归路许多长。相思本是无凭语,莫向花笺费泪行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式