if语句
if then fi
if condition
then
command1
command2
...
commandN
fi
if then else fi
if condition
then
command1
command2
...
commandN
else
command
fi
#也可以增加elif
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
循环
类似于其他语言中的循环,可以用continue和break跳出循环。
for
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
while
while condition
do
command
done
#如果没有条件,就是无限循环。
while :
do
command
done
case
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
until
until 循环执行一系列命令直至条件为 true 时停止。
until condition
do
command
done
例子
假设要从好几万个文件中挑选出几千个你想要的文件,这些文件存放在不同的文件夹下。现在给你这些文件的路径(存放在file_name.txt中),请下载找到这些文件并复制到指定的文件夹下。
for line in $(cat /所在的路径/file_name.txt)#每一行代表一个文件的路径和名称。
do
if test -e $line#判断该文件是否存在。另外,如果文件名末尾含有换行符\r,可以把$line改成${line:0:-2},如果低版本的bash不支持负数表达式,可以用其他方式截取字符串,如${line%\\*}
then
cp $line /file_dir/
else
echo "$line not exist"#shell中,双引号中的变量名被当作变量处理,而单引号中的变量名只是字符串。
fi
done
#写成一行
for line in $(cat /所在的路径/file_name.txt);do if test -e $line;then cp $line /file_dir/;else echo "$line not exist"; fi; done