shell 脚本之for

来源:互联网 发布:mac的ppt怎么调16:9 编辑:程序博客网 时间:2024/06/16 12:22
SUBDIR="joan joanna"

for subdir in $SUBDIR; 
do
echo "building " $subdir; 

done

结果:

building  joan
building  joanna

结果正常。

SUBDIR="1 2 3 4"

for subdir in $SUBDIR; 
do
echo "building " $subdir; 
done

结果:

building  1
building  2
building  3
building  4

结果正常。

若在定义变量列表时没加引号,就出现错误。如:

SUBDIR=joan joanna

for subdir in $SUBDIR; 
do
echo "building " $subdir; 

done

运行出现错误,无法通过。

SUBDIR=10
for subdir in $SUBDIR; 
do
echo "building " $subdir; 
done

结果:

building  10
正常。

SUBDIR=“10”
for subdir in $SUBDIR; 
do
echo "building " $subdir; 
done

结果:

building  10
正常。

总结:定义值,随后遍历定义的值中,对于数据列表需要用引号引起来;单个数据是否加引号无所谓。

定义列表变量还有一种写法:在in后直接写出变量列表。

for subdir in joan joaaa; 
do
echo "building " $subdir; 
done

结果正常:

building  joan
building  joaaa

若写成:

for subdir in "joan joaaa"
do
echo "building " $subdir 
done

结果:

building  joan joaaa

没有出现语法错误,但并没有得到我们需要的结果。

总结:in 后的列表如果加" ",会将其看做一个整体。

in后调用shell命令:

DIR="/var"
cd $DIR
for in $(ls $DIR)
do
  echo $k
done
结果:列出了/var目录下的目录或文件,相当于在var目录下ls

for k in $(seq 1 10)
do
  echo $k
done
结果打印了1~10

结论:对于for的对象,必须是一个已知的数据列表。这个列表可以是给定的值,也可以是命令运行
以后的,也可以是调用shell函数得到的。若将列表赋值给变量,在变量中遍历需要在赋值时加“”,
否则会出错(单个数据无所谓),若数据在在in后得到,加“”后就会把整个数据列表看成一个整体。




0 0
原创粉丝点击