Linux脚本中case语句的小问题

#!/bin/shechoinputfilename:readNAMEft='file"$NAME"'case"$ft"in"$NAME:ASCLL"*)echo\"$N... #!/bin/sh
echo input file name:
read NAME
ft='file "$NAME"'
case "$ft" in
"$NAME: ASCLL"*)
echo \"$NAME\" is ASCLL text
;;
"$NAME: UTF-8"*)
echo \"$NAME\" is UTF-8 Unicode text
;;
"$NAME: Zip"*)
echo \"$NAME\" is Zip archive data
;;
"$NAME: directory"*)
echo \"$NAME\" is Directory
;;
*)
echo \"$NAME\" is Other file type
;;
esac

这个小脚本是我在书上看见的
我执行以后输入/etc
书上的结果是
/etc is Directory
但是我的结果是
/etc is Other file type

百思不得其解,希望大家能帮助我一下
谢谢
展开
 我来答
百度网友fa9d16f77
2010-06-29 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:51.3万
展开全部
按照你到思路,你的shell程序主要有两个错误:
1,变量ft赋值错误;按照你的写法,ft的结果是:file /etc,因为等式右边加的是单引号,是字符串原样赋值,而并没有取到file这个命令到结果,正确写法是:ft=$(file "$NAME")
2,第二个问题是格式问题,小问题。case语句中的备选项,如“$NAME:directory”,冒号后要加一个空格,因为file /etc这条命令的结果是/etc: directory,注意冒号后面是有一个空格的,所以case语句中到备选项格式要与之匹配。
由于你写的程序有这两个错误,解释执行时,会转到case语句中到最后一项输出,即输出:/etc is Other file type
我所说到已经经过本人亲自测试,所用系统为Fedora 12.
希望能帮到你。
百度网友795cb8b
2010-06-29 · TA获得超过328个赞
知道小有建树答主
回答量:379
采纳率:100%
帮助的人:293万
展开全部
echo input file name:
read NAME
这两句可以改为read -p “input file name:” NAME

错误再次,"$NAME: ASCLL"*)应该为"$NAME: ASCLL"),不带后面的*号。
ft='file "$NAME"'改为ft=`file "$NAME"`,`为数字1前面的那一个按键的小点。

另外 echo \"$NAME\" is ASCLL text可以写为
echo “$NAME is ASCLL text.”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白开水人生
2010-06-29 · TA获得超过635个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:657万
展开全部
ft='file "$NAME"'
这一句你输入错了,应该是ft=`file "$NAME"`,不是单引号,是1左边tab上面的那个键,表示执行file "$NAME"命令
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fiber212121
2010-06-29 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:0
展开全部
ft='file "$NAME"'
这一行,最外面的不是单引号是数定1键边的那个``,是用做命令替换的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式