<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # bash筆記 ## 1.第一個腳本 將以下內容保存為test.sh ``` #!/bin/bash # 這里是注釋內容 echo "hello world" ``` 給腳本添加執行權限,以下三個任選一個都可以,-rwxrwxrwx,權限順序ugo,a是所有,省略為a ``` chmod u+x test.sh chmod +x test.sh chmod a+x test.sh ``` ## 2.第二個腳本,獲取用戶輸入用read ``` #!/bin/bash echo "please input your age:" read AGE echo "your age is $AGE" ``` 執行如下 ``` [liyongpeng@localhost 桌面]$ ./t.sh please input your age: 88 your age is 88 ``` ## 3.變量定義 1.變量名和等號之間不能有空格,這可能和你熟悉的所有編程語言都不一樣 2.定義變量不許要($),使用變量的時候才加美元符($) 3.使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。 4.unset刪除變量,被刪除后不能再次使用;unset 命令不能刪除只讀變量。 ``` myUrl="http://www.aaa.com" myNum=100 echo $myUrl echo ${myUrl} readonly myUrl myUrl="http://www.xxx.com" echo $myUrl #執行結果如下,報了一個警告,只讀變量 [liyongpeng@localhost 桌面]$ ./t.sh http://www.aaa.com http://www.aaa.com ./t.sh: line 7: myUrl: readonly variable http://www.aaa.com ``` ## 4.特殊變量 $0 當前腳本的文件名 $n 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。 $# 傳遞給腳本或函數的參數個數。 $* 傳遞給腳本或函數的所有參數。 $@ 傳遞給腳本或函數的所有參數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到。 $? 上個命令的退出狀態,或函數的返回值。 $$ 當前Shell進程ID。對于 Shell 腳本,就是這些腳本所在的進程ID。 $* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。 但當它們被雙引號(" ")包含時,"$*" 會將所有的參數作為一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。 退出狀態 $? 可以獲取上一個命令的退出狀態。所謂退出狀態,就是上一個命令執行后的返回結果。 退出狀態是一個數字,一般情況下,大部分命令執行成功會返回 0,失敗返回 1。(奇葩) 不過,也有一些命令返回其他值,表示不同類型的錯誤。 ## 5.變量替換 -e,使用后替換\n \r\t\v等等 ``` echo "you are a pig \n really?" [liyongpeng@localhost 桌面]$ ./t.sh you are a pig \n really? echo -e "you are a pig \n really?" [liyongpeng@localhost 桌面]$ ./t.sh you are a pig really? #命令結果保存到變量里面,如下 m=`pwd` echo "$m" [liyongpeng@localhost 桌面]$ ./t.sh /home/liyongpeng/桌面 ``` ${var} 變量本來的值 ${var:-word} 如果變量 var 為空或已被刪除(unset),那么返回 word,但不改變 var 的值。 ${var:=word} 如果變量 var 為空或已被刪除(unset),那么返回 word,并將 var 的值設置為 word。 ${var:?message} 如果變量 var 為空或已被刪除(unset),顯示message,否則顯示變量var。 若此替換出現在Shell腳本中,那么腳本將停止運行。 ${var:+word} 如果變量 var 被定義,那么返回 word,但不改變 var 的值。 可以這么理解,-不改變原來的值,=賦值,+和?相反 ## 6.運算 +-*/% (加減乘除取于),注意 val=`expr 2 + 2` echo "Total value : $val" 三點注意: 表達式和運算符之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2,這與我們熟悉的大多數編程語言不一樣。 完整的表達式要被 ` ` 包含,注意這個字符不是常用的單引號,在 Esc 鍵下邊。 乘法必須寫成:val=`expr 12 \* 2`,加反斜線 比較運算 -eq 檢測兩個數是否相等,相等返回 true。 [ $a -eq $b ] 返回 true。 -ne 檢測兩個數是否相等,不相等返回 true。 [ $a -ne $b ] 返回 true。 -gt 檢測左邊的數是否大于右邊的,如果是,則返回 true。 [ $a -gt $b ] 返回 false。 -lt 檢測左邊的數是否小于右邊的,如果是,則返回 true。 [ $a -lt $b ] 返回 true。 -ge 檢測左邊的數是否大等于右邊的,如果是,則返回 true。 [ $a -ge $b ] 返回 false。 -le 檢測左邊的數是否小于等于右邊的,如果是,則返回 true。 [ $a -le $b ] 返回 true。 布爾運算 ! 非運算,表達式為 true 則返回 false,否則返回 true。 [ ! false ] 返回 true。 -o 或運算,有一個表達式為 true 則返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。 -a 與運算,兩個表達式都為 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。 ## 7.字符串拼接 your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 提取與查找 your_name="0123456789" echo ${your_name:1:6} #123456 string="Alibaba is a great company" echo `expr index "$string" b`#4 注意 提取的時候,第一位是0開始,查找的時候第一位從1開始,好奇怪~~ 查找不到會返回0 ## 8.數組 arr=('555' '666' '9999999999') echo "first is :"${arr[0]} echo "all is :"${arr[*]} echo "all is :"${arr[@]} # 取得數組元素的個數 lengtha=${#arr[@]} # 或者 lengthb=${#arr[*]} # 取得數組單個元素的長度 lengthc=${#arr[2]} echo $lengtha echo $lengthb echo $lengthc ## 9.輸出 echo -e "first is :"${arr[0]}"\nzhuanyi"//必須使用-e轉義 printf "first is :"${arr[0]}"\nzhuanyi"//不需要-e ## 10.if語句 if ...then... fi 語句; if ...then... else ... fi 語句; if ...then... elif ...then... else ... fi 語句。 9.case,esac //==========示例========== #!/bin/bash option="${1}" case ${option} in -f) FILE="${2}" echo "File name is $FILE" ;; -d) DIR="${2}" echo "Dir name is $DIR" ;; *) echo "`basename ${0}`:usage: [-f file] | [-d directory]" exit 1 # Command to come out of the program with status 1 ;; esac //==========結果=============== $./test.sh test.sh: usage: [ -f filename ] | [ -d directory ] $ ./test.sh -f index.htm $ vi test.sh $ ./test.sh -f index.htm File name is index.htm $ ./test.sh -d unix Dir name is unix 這個例子,開始真沒看懂~評論說$1,$2是參數,還沒反映過來,看他的運行結果,懂了! 10.for for loop in 1 2 3 45 6 do echo $loop done
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看