• bash 学习笔记


    一直在用bash,但是却只是一知半解,这篇是学习Bash 脚本教程的学习笔记,算是查漏补缺。

    基本语法

    command [ arg1 ... [ argN ]]
    

    比如ls -i ls是命令,-l是参数。

    type

    type命令可以显示一个命令是不是内置命令:

    bash-3.2$ type npm
    npm is /Users/versions/node/v14.16.1/bin/npm
    

    变量

    export

    用户创建的变量仅可用于当前 Shell,子 Shell 默认读取不到父 Shell 定义的变量。为了把变量传递给子 Shell,需要使用export命令。这样输出的变量,对于子 Shell 来说就是环境变量。

    export Foo=foo
    bar=bar
    node
    > process.env.Foo
    'foo'
    > process.env.bar
    // 读不到
    

    字符串处理

    • 获得字符串长度:
    a="1234455"
    echo ${#a}
    
    • 获取子字符串,语法为${varname:offset:length}
    
    str="hello"
    echo ${str:2} # llo
    

    算术表达式

    两个小括号里面可以计算算数表达式

    a=2
    b=4
    (($a + $b))
    echo $(($a + $b))
    
    • 进制转换
    echo $((0xff)) # 16进制
    echo $((2#1011101)) # 二进制
    echo 4((077)) # 八进制
    

    算数表达式也可以用到条件判断里面:

    a=3
    if (($a > 2)) 
    then
     echo 'yes'
    fi
    

    条件判断

    语法:

    if commands; then
      commands
    elif commands; then
      commands...]
    else
      commands]
    fi
    

    注意: 中括号中引用变量名要用双引号引起来

    • 字符串比较
    string1=string2;
    
    if [ "$string1" = "string2" ]
    then
    echo "== $string1"
    fi
    
    • 数字比较
    if ((3 > 2)); then
      echo "true"
    fi
    
    • 正则比较
    INT=-5
    
    if [[ "$INT" =~ ^-?[0-9]+$ ]]; then
      echo "INT is an integer."
      exit 0
    else
      echo "INT is not an integer." >&2
      exit 1
    fi
    

    循环

    for i in {1..4}
    do
      echo $i
    done
    

    其中{1..4}表示一个连续的序列,这个要和[1-4]区分开,这个是在匹配,如正则表达式中用到的

    ls hello[1-4].txt
    
    

    函数

    定义一个函数很简单:

    fn(){
    
    }
    

    调用的时候可以传参fn foo,在函数体内可以引用这些参数:

    $1~$9:函数的第一个到第9个的参数。
    \(0:函数所在的脚本名。 \)#:函数的参数总数。
    下面是一个例子;如果直接调用hello,会要求输入名字再打印,如果传入参数hello name,则直接打印。

    hello() {
      if (($# > 0))
      then
        echo "Hello $1";
      else
        echo "what's your name";
        read name;
        echo "Hello $name"
      fi
    }
    
    

    在函数中,可以使用return 返回一个结果,并在下面的代码里面通过$?读取返回值。

    function func_return_value {
      return 10
    }
    

    执行上面的函数,然后通过$?获得返回值

    $ func_return_value
    $ echo "Value returned by function is: $?"
    Value returned by function is: 10
    

    此外,$?也可以用来判断某一行脚本是否正确执行:
    比如我们想知道 npm install 是否成功

    npm install
    
    if ["$?" = "0"]
    then
      echo 'success';
    else
      echo 'error';
    
  • 相关阅读:
    Mac 上所有的命令行相关问题的总结
    ThinkPHP中的统计查询方法
    织梦任意页面调用{dede:field.content/}的方法
    PHP isset()、empty()、is_null()的使用区别详解
    Dede更新提示DedeTag Engine Create File False的解决办法
    cookie 和session 的区别
    织梦后台如何设置手机站
    PHP时间戳和日期转换
    dede列表页调用
    dede图集内容页调用
  • 原文地址:https://www.cnblogs.com/imgss/p/16032326.html
Copyright © 2020-2023  润新知