您的位置:首页 > 运维架构 > Shell

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

2014-03-29 01:13 1236 查看
今晚在《高级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 <--- $2, $2 <--- $3, $3 <--- $4, 等等.即可以:
for ((i=0;i<=$#;i++))
do
a=$1
shift
echo $a
done
注意:$0脚本名是不会被移动的。
方法2:$@赋值给一个变量,然后再循环读取,貌似比方法1好点:
for i in $@
do
echo $i
done
方法3:使用eval,两次变量替换:
for ((i=1;i<=$#;i++))
do
eval b=\$$i
echo $b
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息