求解 小shell脚本
count=$#
cmd=echo
while [ $count -gt 0 ]
do
cmd="$cmd \$$count"
count=`expr $count -1 `
done
eval $cmd
我用shell运行知道了这个的功能,但不知道每句命令的含义。可否有高手解释一下。谢谢了~~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
count=$# //$#表示的是传给shell参数的个数,将他复制给count
cmd=echo //这句相当于使cmd等同于echo命令
while [$count -gt 0] //while循环,条件是count的值大于0
do
cmd="$cmd \$$count" //给cmd赋一个字符串,$cmd 取出cmd之前赋得值,\$,转义得$字符 ----------------------------------------//$count取出count中的值
count=`expr $count -1` //循环变量递减1
done //while循环结束
eval $cmd //计算cmd的值,并打印出来!
回复 2# 小熊波波
如果cmd等同于echo命令,为什么还能给cmd赋字符串(我觉得只有变量才可以复制,求指教)
cmd="$cmd \$$count" 能否稍微详细点吗???
既然$count取出count中的值了,为什么前面还需添加‘\$’有什么功能
这个eval有什么具体用法可否稍微详细点吗(因为我上机实验时,输入一组数字,打出的是倒序的数组)??
此处的cmd就是一个变量。
\$这个是保留$ ,给eval传过去,后一个$cmd则是取出他的值,结合前面的$,一起做参数传给eval求值,建议你去网上看看eval的用法。