shell编程技巧小结(一)

发布时间:2020-07-08编辑:脚本学堂
shell编程技巧小结,本文会不断更新,因为这些都是些技巧性的东西,在工作和学习中不断积累的。

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 $!

这次先写到这里,慢慢追加,请继续关注。