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 展开
#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 展开
展开全部
书上这么写,是为了保持书写的风格一致。
你疑惑的是为什么他的编写逻辑风格不一致。
没有谁对谁错,如果你非想要先判断文件不存在,加一个!
if `!(test -w $1)`
if `!(test -x $1)`
你疑惑的是为什么他的编写逻辑风格不一致。
没有谁对谁错,如果你非想要先判断文件不存在,加一个!
if `!(test -w $1)`
if `!(test -x $1)`
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if test -z $1
then echo 'please input a file name' ; exit #加个退出
else
。。。
不然, if test -x $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'
否则,先检查文件是否可写,再检查文件是否可执行。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
鹧鸪天·醉拍春衫惜旧香
宋代:晏几道
醉拍春衫惜旧香。天将离恨恼疏狂。年年陌上生秋草,日日楼中到夕阳。
云渺渺,水茫茫。征人归路许多长。相思本是无凭语,莫向花笺费泪行。
宋代:晏几道
醉拍春衫惜旧香。天将离恨恼疏狂。年年陌上生秋草,日日楼中到夕阳。
云渺渺,水茫茫。征人归路许多长。相思本是无凭语,莫向花笺费泪行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询