我需要打印用户输入的参数号。无论我做什么,我总是得到一个空行
echo "Give argument number"
read number
allV=$@
echo ${allV[$number]}
这几行有什么问题?即使我用一些参数启动脚本,我只需手动编写“
”echo ${allV[1]}
我得到的只是空行。
答案 0 :(得分:2)
Bash允许您使用间接引用,该引用也适用于编号参数:
echo "${!number}"
它还允许您对参数列表进行切片:
echo "${@:$number:1}"
或者您可以将参数复制到数组中:
argv=("$@")
echo "${argv[number]}"
在所有情况下,如果参数包含空格和/或glob字符,则几乎肯定需要引号。
答案 1 :(得分:1)
要将$@
作为数组处理,只需将其更改为("$@")
:
echo "Give argument number"
read number
allV=("$@")
echo ${allV[$number-1]}