文章会有【原创】或者【转载】标示,部分来自Google Baidu的学习结果 {Java/PHP/Python/Ruby/Go}

shell编程技巧小结-1  


本文会不断更新,因为这些都是些技巧性的东西,在工作和学习中不断积累的。

1、替换一个目录下的所有文件中指定的字符串。
 
  1. sed -i 's#match_sub#substring#g' `grep -rl "match_sub" /work_dir`    # 替换work_dir目录下所有含有“match_sub”的文件,将其中的"match_sub" 都替换为"substring"

2、if和test命令配合使用

  1. eg1:
  2. if test ! -e /etc/passwd #if与test
  3. then
  4.         echo "passwd file is not exist!"
  5. fi

  6. eg2:test 与逻辑与配合,这里还用read 实现了一个伪造的按【Enter】键退出的功能
  7. test ! -d /tmp/dir && { read -p "/tmp/dir is not exist ,hit [Enter] to exit " enter; exit 1; }

3、逻辑与“&&”和逻辑或“||”配合使用
  1. test $(id -u) -eq 0 && echo "you are root" || echo "you are not root" #如果是uid等于“0”就是root用户,否则不是
4、指明这里是字符串“<<<”
  1. var="jjuk hhu kkuub ooh"
  2. wc -w <<< $var
  3. 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、将函数放到后台执行
  1. #!/bin/bash
  2. funA(){
  3.         while [ 1 ]
  4.         do
  5.                 ping -c 1 www.qq.com
  6.                 exit 0
  7.         done
  8. }
  9. funA & #将函数放到后台执行
  10. echo $! #打印这个函数的进程id(PID)
  11. funB(){
  12.         while [ 1 ]
  13.         do
  14.                 ping -c 1 www.baidu.com
  15.                 exit 0
  16.         done
  17. }
  18. funB &
  19. echo $!
这次先写到这里,慢慢追加

版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。