美文网首页
shell杂记

shell杂记

作者: llicety | 来源:发表于2018-02-04 10:16 被阅读0次

    1.shell中的until与 "$@"一起使用,shift的作用

    function until_test() {
        until [ -z "$2" ];do
                    echo $2
        shift
        done
    }
    

    until_test a b c d ef


    image.png

    上面的那段shell脚本看字面的意思就是从第二个参数开始,通过until循环,直到$2参数为空。$2在这段代码中没有明显的改动的地方,看起来是一个不变的值,那不是要无限死循环?其实关键点在"shift"
    shift:位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1
    shift 命令还有另外一个重要用途, Bsh 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。
    shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。

    当然你也可以自己设置一个计数器,但是个人觉得有点low

    function for_test() { 
        count=1; 
        for i in $@; 
        do 
            if [ $count -gt 2 ];then 
                echo $i;
             fi;
            count=$((count+1));
        done;
     }
    

    第二点 awk 中的"~" 用来做正则匹配
    比如:

    awk -F ":" '{if($1 ~/nihao/){print $0}}'  testfile
    

    主要使用来匹配第一项为"nihao"的一行
    当然。你可能会说干嘛不用"=="呢, 因为"~"可以匹配正则表达式

    相关文章

      网友评论

          本文标题:shell杂记

          本文链接:https://www.haomeiwen.com/subject/lztmzxtx.html