|
有这样一个较复杂的命令, 这里列出其中11个args的array.
- option1=("choice" "-enable")
- option2=("-c" "120")
- option3=("-start" "001")
- option4=("-stop")
- option5=("-Rule" "rule1 day1:day2")
- option6=("-interval" "06:33" "13:03")
- option7=("-t" "name1" "value1")
- option8=("-e" "event1")
- option9=("-o" "4")
- option10=("-h" "1")
复制代码
对于array的变量替换尝试了多种方法:
- for i in $(seq 10); do
- #stdout option1 的第一个和第二个element.
- echo ${option$i[1]} ${option$i[2]} #错误写法.
- eval echo \$"option"$i; eval echo \$"option"$i[1] #第一个ok,第二个不行.
- eval echo \$${option"$i"[1]}; eval echo \$${option$i[1]} #报错
- #尝试了很多写法,最后试出来了正确的array替换表达式:
- [color=red]eval echo \$"{option"$i[0]"}";eval echo \$"{option"$i[1]"}"[/color]
- done
复制代码
下面的方法列出所有的ARGS:
- j=0
- ARGS=""
- for i in $(seq 10); do
- j=0
- while [ $j -le $(eval echo \$'{#option'$i[@]'}') ]; do
- NEWARGS=$(eval echo \$'{option'$i[$j]'}')
- ARGS="$ARGS $NEWARGS"
- j=$((++j))
- done
- done
- echo $ARGS
复制代码
还有什么好的办法, 也请分享. 谢谢! |
|