shell编程技巧小结,本文会不断更新,因为这些都是些技巧性的东西,在工作和学习中不断积累的。
1、替换一个目录下的所有文件中指定的字符串。
复制代码 代码如下:
sed -i 's#match_sub#substring#g' `grep -rl "match_sub" /work_dir` # 替换work_dir目录下所有含有“match_sub”的文件,将其中的"match_sub" 都替换为"substring"
2、if和test命令配合使用
复制代码 代码如下:
eg1:
if test ! -e /etc/passwd #if与test
then
echo "passwd file is not exist!"
fi
eg2:test 与逻辑与配合,这里还用read 实现了一个伪造的按【Enter】键退出的功能
test ! -d /tmp/dir && { read -p "/tmp/dir is not exist ,hit [Enter] to exit " enter; exit 1; }
3、逻辑与“&&”和逻辑或“||”配合使用
复制代码 代码如下:
test $(id -u) -eq 0 && echo "you are root" || echo "you are not root" #如果是uid等于“0”就是root用户,否则不是
4、指明这里是字符串“<<<”
复制代码 代码如下:
var="jjuk hhu kkuub ooh"
wc -w <<< $var
grep "gg" <<< $var
5、文件描述符fd
复制代码 代码如下:
exec 68> /tmp/cmd.log #给文件cmd.log绑定一个文件描述符fd“68”,注意 “68>" 是连在一起的,中间没有空格
echo "$var" >&68 #把变量打印输出到这个fd
date >&68 #日期命令的输出也定向到这个fd,追加到文件上去,不会覆盖原有的内容
exec 68<&- #关闭这个fd
6、将函数放到后台执行
复制代码 代码如下:
#!/bin/bash
funA(){
while [ 1 ]
do
ping -c 1 www.qq.com
exit 0
done
}
funA & #将函数放到后台执行
echo $! #打印这个函数的进程id(PID)
funB(){
while [ 1 ]
do
ping -c 1 www.baidu.com
exit 0
done
}
funB &
echo $!
这次先写到这里,慢慢追加,请继续关注。