天天看点

linux中while中参数过多,linux中的for、while循环输出中赋值变量及shell中循环获取脚本参数...

今晚在《高级bash+脚本编程指南》中看到使用for和while循环语句赋值变量的脚本,觉得很有创意。。

从循环的输出中产生一个变量

################################Start

Script#######################################

1 #!/bin/bash

2 # csubloop.sh: 从循环的输出中产生一个变量.

3

4 variable1=`for i in 1 2 3 4 5

5 do

6 echo -n "$i" # 对于这里的命令替换来说

7 done` #+ 这个'echo'命令是非常关键的.

8

9 echo "variable1 = $variable1" # variable1 = 12345

10

11

12 i=0

13 variable2=`while [ "$i" -lt 10 ]

14 do

15 echo -n "$i" # 再来一个, 'echo'是必须的.

16 let "i += 1" # 递增.

17 done`

18

19 echo "variable2 = $variable2" # variable2 = 0123456789

想起之前想要在shell脚本中去循环获取脚本参数$1、$2、$3、$4。。。

方法1:使用shift,shift命令重新分配位置参数,其实就是向左移动一个位置.

$1

for ((i=0;i<=$#;i++))

do

a=$1

shift

echo $a

done

注意:$0脚本名是不会被移动的。

方法2:[email protected]赋值给一个变量,然后再循环读取,貌似比方法1好点:

for i in [email protected]

do

echo $i

done

方法3:使用eval,两次变量替换:

for ((i=1;i<=$#;i++))

do

eval b=\$$i

echo $b

done