当前位置: 技术问答>linux和unix
简单shell脚本,求解释
来源: 互联网 发布时间:2016-10-10
本文导语: 分析下列shell脚本的功能: count=$# cmd=echo while [ $count –gt 0 ] do cmd=”$cmd $$count” count=`expr $count - 1` done eval $cmd 我在Linux运行了一下,知道它显示的是一个空行;如...
分析下列shell脚本的功能:
我在Linux运行了一下,知道它显示的是一个空行;如果在“cmd=echo [参数] ”写上命令,就会被解释为相应执行命令
如:cmd=echo pwd ,就会显示当前路径
但是,我不知道这个程序的功能是什么!!!!!!!!!!!!
count=$#
cmd=echo
while [ $count –gt 0 ]
do
cmd=”$cmd $$count”
count=`expr $count - 1`
done
eval $cmd
我在Linux运行了一下,知道它显示的是一个空行;如果在“cmd=echo [参数] ”写上命令,就会被解释为相应执行命令
如:cmd=echo pwd ,就会显示当前路径
但是,我不知道这个程序的功能是什么!!!!!!!!!!!!
|
我看了 怎么觉得是把传给脚本的参数逆序显示出来呢
比如传给脚本2个参数A B
那么while会循环2次
cmd的结果是echo $2 $1
结果是你输入的A B 显示的结果是B A
比如传给脚本2个参数A B
那么while会循环2次
cmd的结果是echo $2 $1
结果是你输入的A B 显示的结果是B A
|
count=$#
# 这个你知道吧?$#环境变量为输入的参数个数
cmd=echo
# 这句,很简单吧?就是把echo赋值给一个变量cmd
while [ $count –gt 0 ]
# $count的值和0比较,大于等于0则,循环
do
cmd=”$cmd $$count”
# 这一句把那几个变量代入,至于$就是显示这个特殊字符$了
count=`expr $count - 1`
# 参数的个数减少1,也就是某一个变量减少吧,要用它来跳出循环
done
eval $cmd
# 这个你知道吧?$#环境变量为输入的参数个数
cmd=echo
# 这句,很简单吧?就是把echo赋值给一个变量cmd
while [ $count –gt 0 ]
# $count的值和0比较,大于等于0则,循环
do
cmd=”$cmd $$count”
# 这一句把那几个变量代入,至于$就是显示这个特殊字符$了
count=`expr $count - 1`
# 参数的个数减少1,也就是某一个变量减少吧,要用它来跳出循环
done
eval $cmd
|
eval $cmd
就会把变量cmd的内容当命令执行
你如果你把cmd=echo改成cmd=echo pwd 这样的赋值是错误的
会导致cmd为空 pwd会直接执行 因此会显示当前路径
这样有空格的复制要加"" 即cmd="echo pwd"
你不要乱修改脚本
就会把变量cmd的内容当命令执行
你如果你把cmd=echo改成cmd=echo pwd 这样的赋值是错误的
会导致cmd为空 pwd会直接执行 因此会显示当前路径
这样有空格的复制要加"" 即cmd="echo pwd"
你不要乱修改脚本
|
这样有空格的复制要加"" 即cmd="echo pwd"
主席说的这个是关键。。要作为一个字符串传递给cmd
主席说的这个是关键。。要作为一个字符串传递给cmd