Linux Shell常用小功能汇总实现
具体实现样例 Shell实现while循环
while 循环体 do 循环体 done
非死循环实现注意:while循环条件中括号与内部内容之间留有空格
1 2 3 4 5 6 7 i=0 while [ $i -le 10 ]do echo $i i=$[$i +1] done
死循环实现死循环while条件可直接用“:”,注意“:”两边有空格
当然也可以直接将循环条件变成恒为True的情况,比如下面两种
while [ "1" = "1" ]
或while test "1" = "1"
1 2 3 4 5 6 7 i=0 while :do echo $i i=$[$i +1] sleep 2s done
Shell判断文件或文件夹是否存在
更多判断条件见Shell脚本中和文件相关的判断符
文件是否存在判断注意:if条件中括号与内部内容之间留有空格
1 2 3 4 5 if [ -f "/home/filename" ];then echo "文件已存在" else echo "文件不存在" fi
文件夹是否存在判断注意:if条件中括号与内部内容之间留有空格
1 2 3 4 5 if [ -d "/home/" ];then echo "文件夹存在" else echo "文件夹不存在" fi
Shell判断一个变量或输入参数是否为空
1 2 3 4 5 6 read -p "请输入:" varvalueif [ ! -n "$varvalue " ] ;then echo "未输入,变量为空" else echo "已输入,变量非空:$varvalue " fi
变量直接赋空
1 2 3 4 5 6 varvalue= if [ ! $varvalue ]; then echo "变量为空" else echo "变量非空" fi
1 2 3 4 5 if [ ! -n "$1 " ] ;then echo "参数为空" else echo "参数非空:$1 " fi
除以上方法外,还可以用如下判断条件判断
if test -z "$varvalue"
或if [ "$varvalue" = "" ]
Shell中等待一定时间或等待进程结束实现
等待一定时间sleep支持的时间单位为 h(时),m(分),s(秒)
1 2 3 4 sleep 3 sleep 1s sleep 1m sleep 1h
等待进程或作业执行完毕wait支持等待进程或作业执行完毕。
可通过jobs命令查看后台进行中的作业
1 2 3 wait wait 1234 wait %1
Shell脚本实现并行处理数据
并行实现思路之一可通过后台运行符&和进程等待wait组合实现
1 2 3 4 ./1.sh & ./2.sh & wait
Shell脚本获取某个目录下(除去指定文件)的所有文件
1 2 3 4 for name in /etc/*do echo $name done
方式二,使用ls命令
1 2 3 4 for name in `ls /etc/`do echo $name done
1 2 3 4 5 6 7 8 9 10 11 12 13 for name in /etc/*.conf do echo $name done ``` - 获取某个目录下除去某些指定文件的所有文件 `利用ls 或ls -a与grep -v命令组合` `以下样例代码获取/etc/目录下的除去yum、yum.conf、c.txt三个文件的其余文件` ```bash for name in `ls /etc/ | grep -v 'yum\|yum.conf\|c.txt' ` do echo $name done
Shell脚本连接(拼接/合并)字符串
Shell脚本连接字符串Shell字符串拼接不需要使用任何运算符,将两个字符串并排放在一起就能实现拼接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 string1="hello" string2="word" str1=$string1$string2 str2="$string1 $string2 " str3=$string1 ": " $string2 str4="$string1 : $string2 " str5="${string1} 111: ${string2} 222" echo $str1 echo $str2 echo $str3 echo $str4 echo $str5
Shell获取时间戳
1 2 3 4 date +%s date +%s%3N date +%s%6N date +%s%N