求解 小shell脚本

发布于 2022-10-15 10:06:56 字数 231 浏览 25 评论 0

count=$#
cmd=echo
while [ $count -gt 0 ]
do
  cmd="$cmd \$$count"
  count=`expr $count -1 `
done
eval $cmd
我用shell运行知道了这个的功能,但不知道每句命令的含义。可否有高手解释一下。谢谢了~~~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

逐鹿 2022-10-22 10:06:56

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的值,并打印出来!

人事已非 2022-10-22 10:06:56

回复 2# 小熊波波

如果cmd等同于echo命令,为什么还能给cmd赋字符串(我觉得只有变量才可以复制,求指教)

cmd="$cmd \$$count"  能否稍微详细点吗???

既然$count取出count中的值了,为什么前面还需添加‘\$’有什么功能

这个eval有什么具体用法可否稍微详细点吗(因为我上机实验时,输入一组数字,打出的是倒序的数组)??

婴鹅 2022-10-22 10:06:56

此处的cmd就是一个变量。
\$这个是保留$ ,给eval传过去,后一个$cmd则是取出他的值,结合前面的$,一起做参数传给eval求值,建议你去网上看看eval的用法。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文