zoukankan      html  css  js  c++  java
  • Linux Bash 总结

     1. Bash 概念

    主要有 4 种 shell 语言,Bash 是其中一种。四种 shell 分别是:

        - bash (Bourne Again SHell)

        - csh (C SHell)

        - ksh (KornSHell)

        - zsh

     2. Bash 变量

    • 定义变量
    VAR="Hello World"
    VAR=123

    注意:"=" 前后不要有空格

    •  使用变量
    $VAR
    ${VAR}
    • 设置只读变量
    readonly VAR
    • 取消一个变量
    unset VAR

     双引号,单引号区别

        ''       -   单引号中的字符不会做任何转换

        ""      -   双引号中的特殊字符会当做特殊字符处理,比如 "$" and "" 会被识别成特殊字符。

        ``      -   执行 `` 中的命令

     

        sudo yum install -y $(cat rpm_requirements.txt)

     

     3. 字符串

        A string can be defined with "", '' or nothing.

     

        Get the length of a string

            string="abcd"

            echo ${#string} # output is 4

     

        Cut out a string

            echo ${var:0:5} # start from 0, length is 5, var[0,5)

     

        Substitute

            ${VAR/a/A} # Substitute the first 'a' with 'A'

            ${VAR//a/A} # Substitute all 'a' with 'A'

            ${VAR//[ |:]/-} # Substitute all ' ' or ':' with '-'

     

     4. 数组

        Define an array

            array_name=(value0 value1 value2 value3)

     

            array_name=(

            value0

            value1

            value2

            value3

            )

     

            array_name[0]=value0

            array_name[1]=value1

            array_name[n]=valuen

     

        Get an element of  an array

            ${array_name[n]}

     

        Get all elements of an array

            ${array_name[@]}

     

        Get length of an array

            ${#array_name[@]}

            ${#array_name[*]}

        Get length of element n

            ${#array_name[n]}

     

        Through an array

            for data in ${array[@]}; do 

                echo ${data}

            done

     

     5. 函数

        Define firstly and then use it.

        Two ways to define a function:

     

            foo() {

            }

     

            function foo {

            }

     

            function foo() {

            }

     

        Use a function

            foo

        Use a function with parameter

            var="Hello world"

            foo ${var} # There will be two parameters, $1="Hello" $2="world"

            foo "Hello world" # There will be one parameter, $1="Hello world"

     

        Return value is returned by using "return xxx". xxx is in [0,255], saved in $?.

        Return a string is invalid.

        If no "return xxx" in function, return the result of last command.

     

        Two ways to get the return value:

            foo

            i=$?

     

            foo() {

                echo 3

            }

            i=`foo`

     

        Use keyword "local" to define a local variable in function.

        Otherwise, the varibale in function is global.

     

        Use keyword "exit" in function will exit the script.

     

     6. Bash 的参数处理

        $0 - bash name

        $1 - first parameter

        $2 - second parameter

        $@ - all parameters

        $* - all paramters

        $# - number of paramters

     

        shift

        shift will shift parameter to left,

        "shift" default "shift 1"

     

     7. Bash 中的 if

      ## FORMAT

        if [ condition ]; then

            cmd

        elif [ condition ]; then

            cmd

        else

            cmd

        fi

     

      ## EXAMPLE

        if [ -e file1 ] # file1 exists

        if [ -f file1 ] # file1 exists and is a regular file

        if [ -s file1 ] # file1 exists and size > 0

        if [ -L file1 ] # file1 exists and is a link

        if [ -r file1 ] # file1 exists and is readable

        if [ -w file1 ] # file1 exists and is writable

        if [ -x file1 ] # file1 exists and is executable

        if [ -d dir1 ] # dir1 exist

        if [ file1 -nt file2 ] # file1 new than file2

        if [ file1 -ot file2 ] # file1 old than file2

     

        if [ -z string ] # string length is 0

        if [ -n string ] # string length is not 0

        if [ "$str1"x = "$str2"x ] # str1 == str2

        if [ "$str1"x == "$str2"x ] # str1 == str2

        if [ "$str1"x != "$str2"x ] # str1 != str2

     

        if [ $num1 -eq $num2 ] # num1 == num2

        if [ $num1 -nq $num2 ] # num1 != num2

        if [ $num1 -lt $num2 ] # num1 < num2

        if [ $num1 -le $num2 ] # num1 <= num2

        if [ $num1 -gt $num2 ] # num1 > num2

        if [ $num1 -ge $num2 ] # num1 >= num2

     

        Note:

        1. use []

        2. after '[' and before ']' have a space

     

        if [ -e file1 -a -e file2 ]

        if [ -e file1 -o -e file2 ]

        if [ ! -e file1 ]

     

        if  [[ exp1 && exp2 ]]

        if  [[ exp1 || exp2 ]]

     

     8. Bash 中的 for

        for ((i=0; i<10; i++)); do

            echo $i

        done

     

        for ((i=0; i<10; i=i+2)); do

            echo $i

        done

     

        for i in {1..5}; do

            echo $i

        done

     

        for i in {1..100..2}; do

            echo $i

        done

     

        for i in $(ls); do

            echo $i

        done

     

     9. Bash 中的 while

    while [ condition ]; do
            cmd
    done

      10. Bash 中的 case

    case $Command in
        gzip)
            tar czfP /backup/backupfile-`date +%F-%H-%M-%S`.tar.gz /etc/
            ;;
        bzip2)
            tar cjfP /backup/backupfile-`date +%F-%H-%M-%S`.tar.bz2 /etc/
            ;;
        xz)
            tar cJfP /backup/backupfile-`date +%F-%H-%M-%S`.tar.xz /etc/
            ;;
        *)
            echo "Usage:`basename $0`{gzip | bzip2 | xz }."
            ;;
    esac

     11. IO 重定向

        ls > log

        ls >> log

        ls 2>&1 > log

       

        wc -l < file

        wc -l <delimiter

            first line

            second line

        delimiter

     

     12. Bash 中的数学计算

        For int calculation:

            val=`expr 2 + 2`

            val=`expr $a + $b`

            val=`expr $a - $b`

            val=`expr $a * $b`

            val=`expr $b / $a`

            val=`expr $b % $a`

     

            Note: There should be space before and after operator.

     

     13        Utils

        Get current shell directory

            SHELL_FOLDER=$(dirname $(readlink -f "$0"))

     

        $? stores the return code.

     

  • 相关阅读:
    git(1)-git关联GitHub-windows-转载
    jenkins(4)-jenkins配置邮件通知
    jenkins(3)-linux下安装jenkins(yum install方式)
    【PAT甲级】1090 Highest Price in Supply Chain (25 分)(DFS)
    【PAT甲级】1087 All Roads Lead to Rome (30 分)(MAP【int,string】,邻接表,DFS,模拟,SPFA)
    【PAT甲级】1018 Public Bike Management (30 分)(DFS,SPFA)
    Educational Codeforces Round 61 (Rated for Div. 2) G(线段树,单调栈)
    Atcoder Grand Contest 032C(欧拉回路,DFS判环)
    Educational Codeforces Round 62 (Rated for Div. 2)E(染色DP,构造,思维,组合数学)
    Atcoder Grand Contest 031C(构造,思维,异或,DFS)
  • 原文地址:https://www.cnblogs.com/weiweifeng/p/13187419.html
Copyright © 2011-2022 走看看