• shell符号解释


    #符号详解
    () 在子shell中运行
        (a=1);echo $a,结果是空,因为a=1不是在当前shell中运行的(a=1);(echo $a)也是空的
        小技巧:(cd $path, do something) 可以让不切换当前目录而在其它目录干点别的事儿~
        () 还有个功能是数组的赋值:比如a=(1 3 5),那么${a[0]}=1;${a[1]}=3;${a[2]}=5,需要注意的是,下标是从0开始的。
    
    (()) 表达式计算
        a=1;((a++));echo $a,这时a就是2了。
    
    <() 和 >() 进程代入,可以把命令的执行结果当成文件一样读入
        比如comm前一般需要sort,那就可以这样comm <(sort 1.lst) <(sort 2.lst)
        或者是paste <(cut -t2 file1) <(cut -t1 file1),和管道差不多,但是支持多个输入。
    
    $() $(cmd) 执行cmd的结果
        比如cmd是echo ls,那么就是执行ls,比如file $(which bash),which bash的结果是/bin/bash,
        所以file $(which bash)等于file /bin/bash。如果你$(ls),而且你的当前目录下只有a b两个文件,
        那么就是执行a b,然后系统会提示,命令没找到。$() 基本和 `` 等价。
    
    $(()) 表达式扩展,
        和(())很相似,但是这个是有点不同,$(())不能直接$((b++)),例如:b=1;echo $((++b))
        这时b等于2,显示的也是2,b=1; echo $((b++))这时b等于2,显示的是1.
    
    [] 和 [[]],[] 就是 test,[]和[[]]都是条件表达式,不过[[]]有比[]高的容错性, [ -a|-o]  [[ && | || ]]
        如果a为空,那么[ $a -eq 0 ]会报错,但是[[ $a -eq 0 ]]不会,所以一般都会使用[[]]或者是
        [ "$a" -eq 0 ],[[]]支持的功能也比 [] 多,比如[[ aaa =~ a{3} ]],[] 还有一种用途,
        如果你的当前目录下有a1-a9九个文件,你可以用a[1-9]来替代这九个文件。
        有点需要注意,你不能用a[1-20]来代替a1- a20,必须要a[1-9] a1[0-9] a20。
        但是需要注意的是 [[]] 数字进制转换的坑~
    
    $[] 是 $(()) 的过去形式,现在已经不建议使用。
    
    {n..m} {1..30} 就是1-30,或者是/{,s}bin/表示/bin/和/sbin/,ab{c,d,e}表示abc、abd、abe,
        小技巧:文件备份:cp a.sh{,.bak}{ cmd1; cmd2; } 的作用是定义一个命令组,一般用在单行的条件表达式中:
        [[ 1 -eq 2 ]] && echo True || { echo False; echo "Program will exit!"; }
        其实 shell 函数的语法也是它的变体:
        a(){ i=$1; echo $((i++)); echo $((++i)); } && a 1
    
    ${} 变量的Parameter Expansion,
        用法很多,最基本的 ${var}1,防止变量扩展冲突,具体可以查看man bash
    

      

  • 相关阅读:
    [译]async/await中使用阻塞式代码导致死锁
    C# 对象与JSON字符串互相转换的三种方式
    C# form 传参数的几个方法
    C# 跨线程调用控件的4中方法
    Task的取消
    Task总结
    一个开发10年程序员论:学习Python最正确的步骤
    阿里大神总结的Python基础知识实例,超详细
    十条Python面试题陷阱,看看你是否会中招
    Python程序员编程10大原则,请牢牢记住,避免吃亏
  • 原文地址:https://www.cnblogs.com/xiaochina/p/10012746.html
Copyright © 2020-2023  润新知