Linux 如何在shell中处理10个以上的参数
我在linux上使用bash shell,希望在shell脚本中使用10个以上的参数使用大括号来设置它们:Linux 如何在shell中处理10个以上的参数,linux,bash,shell,parameters,Linux,Bash,Shell,Parameters,我在linux上使用bash shell,希望在shell脚本中使用10个以上的参数使用大括号来设置它们: echo "${10}" 您还可以像这样迭代位置参数: for arg 或 或 您最多可以有256个从0到255的参数,其中包括: ${255} 我认为极限取决于外壳。Bash、dash、ksh和zsh似乎没有sh-c'echo${333}'/usr/bin/*myshell轻松地增加到200万set$(seq 2097152);echo${2097152}注意,有10个参数会使它非
echo "${10}"
您还可以像这样迭代位置参数:
for arg
或
或
您最多可以有256个从0到255的参数,其中包括:
${255}
我认为极限取决于外壳。Bash、dash、ksh和zsh似乎没有
sh-c'echo${333}'/usr/bin/*
myshell轻松地增加到200万set$(seq 2097152);echo${2097152}
注意,有10个参数会使它非常混乱。也许最好使用选项(例如-a1
或-foo=bar
)。请参见mangetopt
、mangetopts
和manbash
,以了解执行此操作的一些选项。另请参见:请注意,${10}将在bash中工作,但会限制您的可移植性,因为sh的许多实现只允许单个数字的规范。@William:有些shell不接受它,例如原始的遗留Bourne shell,但除了我在另一个注释中列出的shell(Bash、dash、ksh和zsh)之外,它还可以在csh、tcsh和Busybox ash中工作。@williampersell${10}
定义为担心${10}
只有在使用不符合标准的非常旧的实现时才需要工作。可能只是历史的兴趣…但我还没有使用过它!我想是因为最佳实践表明,10个参数太多了,除非它们被重复,在这种情况下,您将使用“$@”
对它们进行迭代,而不是枚举它们。
while (( $# > 0 )) # or [ $# -gt 0 ]
do
echo "$1"
shift
done
${255}