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
百思不得其解,希望大家能帮助我一下
谢谢 展开
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
百思不得其解,希望大家能帮助我一下
谢谢 展开
展开全部
按照你到思路,你的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.
希望能帮到你。
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.
希望能帮到你。
展开全部
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.”
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.”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ft='file "$NAME"'
这一句你输入错了,应该是ft=`file "$NAME"`,不是单引号,是1左边tab上面的那个键,表示执行file "$NAME"命令
这一句你输入错了,应该是ft=`file "$NAME"`,不是单引号,是1左边tab上面的那个键,表示执行file "$NAME"命令
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ft='file "$NAME"'
这一行,最外面的不是单引号是数定1键边的那个``,是用做命令替换的。
这一行,最外面的不是单引号是数定1键边的那个``,是用做命令替换的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询