Linux shell 脚本 间接获取输入参数的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux shell 脚本 间接获取输入参数的方法相关的知识,希望对你有一定的参考价值。
Linux shell 脚本下,获取输入参数使用$1,$2,可以直接使用$1,$2来获取输入参数,请问可以间接获取输入参数么,例如var=1 根据var的值来获取输入参数,这种语法应该怎么写?
我的问题的意思是在shell脚本中,var=2, 这个时候我如果想获取第二个输入参数也就是($2)怎么获取,$$var好像不行
比如
foo=bar
bar=123
echo $!foo
会打印 123
再比如下面的脚本,依次打印脚本的各个输入参数。
#!/bin/bash
var=1
while [ $var -le $# ]
do
echo "Param $var is $!var"
let var++
done
不用indirect expansion,也可以用 eval, 比如
#!/bin/bash
var=1
while [ $var -le $# ]
do
eval echo "Param $var is \$$var"
let var++
done追问
我想问一下,第一种的话,只有bash才会有的写法么?其他的shell支持么?这两种都很好,非常感谢
参考技术A 1. 用eval,可以把字符串当作命令来执行:val=2
eval "x=\$$val"
echo $x
2. 用"$@"把参数列表转化成数组
val=1
x=( "$@" )
echo "$x[$val]"
注意:数组是从0开始的,也就是 $x[0] 对应 $1、$x[1] 对应 $2,依次类推…… 参考技术B cat > a.sh << EOF
#!/bin/bash
FILES="$@"
for f in $FILES
do
echo $f
done
EOF 参考技术C http://www.ibm.com/developerworks/cn/linux/l-bash-parameters.html
你可以看下这个文章 参考技术D 脚本再包一层? 写个脚本来调用当前的
shell脚本获取参数&在线执行shell脚本
参考技术A 本文介绍以下2个知识点,为后后续在工作过程中安装一键安装脚本打好基础:如下shell脚本中传入的参数依次值如下:
如脚本 getopts.sh
执行 ./getopts.sh -a dd -b ,打印如下结果
如脚本 for.sh
有时候shell脚本可以放在http页面上,不用download,可以直接执行。
https://www.cnblogs.com/klb561/p/8933992.html
https://www.cnblogs.com/faberbeta/archive/2004/01/13/13559686.html
以上是关于Linux shell 脚本 间接获取输入参数的方法的主要内容,如果未能解决你的问题,请参考以下文章