免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1514 | 回复: 4
打印 上一主题 下一主题

参数(求助) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-14 15:12 |只看该作者 |倒序浏览
把输入的参数放到char,然后把输入的参数个数放到numchars,但运行的结果与预期的不一致,哈,再次请教~~~

liangmingzhang@ubuntu:~$ vim ctype
char="$*"
        numchars=$( echo "$char" | wc -c )
        if [ "$numchars" -ne 1 ]
        then
                echo "please input single char"
                exit 1
        fi
#case "$char"
#       [0-9]) echo number;;
#       [a-z]) echo "Small char";;
#       [A-Z]) echo "Big char";;
#       *) echo "special char";;
#esac
~
~
~
"ctype" 13L, 251C written                                                                                                   
liangmingzhang@ubuntu:~$ ./ctype c
please input single char
liangmingzhang@ubuntu:~$

论坛徽章:
0
2 [报告]
发表于 2009-11-14 16:06 |只看该作者
原帖由 ttplayer2006 于 2009-11-14 15:12 发表
把输入的参数放到char,然后把输入的参数个数放到numchars,但运行的结果与预期的不一致,哈,再次请教~~~

liangmingzhang@ubuntu:~$ vim ctype
char="$*"
        numchars=$( echo "$char" | wc -c )
   ...


$ sh -x ctype c  
+ char=c
++ echo c
++ wc -c
+ numchars=2
+ '[' 2 -ne 1 ']'
+ echo 'please input single char'
please input single char
+ exit 1

以上是你所写脚本分步执行情况,从中可以看出,是错误是出在 wc 这个命令上的...
因为:
       -c, --bytes
              print the byte counts
wc -c 是用来统计文本所含的字节的,“c”的字节为2,自然会出现与预期不同的结论了。

建议使用 -w 参数:
       -w, --words
              print the word counts

------------
$ cat ctype
char="$*"
        numchars=$( echo "$char" | wc -w )
        if [ "$numchars" -ne 1 ]
        then
                echo "please input single char"
                exit 1
        fi
#case "$char"
#       [0-9]) echo number;;
#       [a-z]) echo "Small char";;
#       [A-Z]) echo "Big char";;
#       *) echo "special char";;
#esac

$ ./ctype c
$

[ 本帖最后由 bier-linux 于 2009-11-14 16:08 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-11-14 16:59 |只看该作者
原帖由 bier-linux 于 2009-11-14 16:06 发表


$ sh -x ctype c  
+ char=c
++ echo c
++ wc -c
+ numchars=2
+ '[' 2 -ne 1 ']'
+ echo 'please input single char'
please input single char
+ exit 1

以上是你所写脚本分步执行情况,从中可 ...



谢谢指点~~

论坛徽章:
0
4 [报告]
发表于 2009-11-14 18:43 |只看该作者

回复 #1 ttplayer2006 的帖子

numchars=$( echo "$char" | wc -w )

just
numchars="$#"

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2009-11-14 23:20 |只看该作者
Good good study, day day up.
#查看当前shell类型
echo $SHELL

#查看当前shell类型或者shell文件名本身
echo $0

#查看参数的个数(0表示沒有参数)
echo $#

#查看全部参数(先解析,后传入,传入的参数中双引号被抛弃)
./test.sh "a" "b c"
echo $*
#$1=a
#$2=b
#$3=c

#查看全部参数(不解析,直接传入,传入的参数中双引号不被抛弃)
./test.sh "a" "b c"
echo $@
#$1=a
#$2=b c

#查看上一条命令的返回值
echo $?

#查看当前shell的PID
echo $$

#查看后台运行的最后一个进程的PID
echo $!

#查看上一个命令的最后一个参数
echo $_
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP