Linux脚本中case语句的小问题

Linux脚本中case语句的小问题,第1张

按照你到思路,你的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.

希望能帮到你。

换成这个试试字符类 [:lower:]小写和[:upper:]大写

[a-z][A-Z]这种写会被系统当成是一样的,不区分大小写。

你也可以重置所有的本地化设置LC_ALL=C

这样脚本的正则表达式可以正确识别

原来我�‹.shell写的计算器:[root@liuxiting testdir]# cat calculator.sh #!/bin/bashecho "usage: 1+3 <Enter>,q <Enter>is quit"while [ 1 ]doread -p "->>" str 1>>/dev/nulla=`echo $str |awk -F '+|-|*|/' '{print $1}'`if [ $a == q ]thenbreakfib=`echo $str |awk -F '+|-|*|/' '{print $2}'`o=`echo $str |grep -o "[[:punct:]]" | grep -v "\."`case $o in+) awk 'BEGIN{printf " =%.2f\n",'$a'+'$b'}'-) awk 'BEGIN{printf " =%.2f\n",'$a'-'$b'}'\*) awk 'BEGIN{printf " =%.2f\n",'$a'*'$b'}'/)if [ $b -eq 0 ]then echo 0 Can NOT be denominator!continuefi awk 'BEGIN{printf " =%.2f\n",'$a'/'$b'}'#^) awk 'BEGIN{printf " =%.2f\n",'$a'**'$b'}'*) echo erroresacdone 刚刚写的倒序输出:[root@liuxiting testdir]# cat daoXuShuChu.sh #!/bin/bash echo "usage: 123456 <Enter>, q <Enter>is quit"while [ 1 ]doecho -n "Pleasw enter number : " read n if [ $n == 'q' ]then breakfisd=0 rev="" on=$n echo "$n" while [ $n -gt 0 ] do sd=$(( $n % 10 )) # get Remainder n=$(( $n / 10 )) # get next digit rev=$( echo $rev$sd) done echo "$on in a reverse order $rev" done


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8326891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存