Bash基礎第二節(jié)

  • if 結構

語句結構:

if 代表語句塊開始,fi代表語句塊結束。

if [condition] : then ...; fi

if [condition]: then ...;else ...; fi

if [conditon]: then ...;elif ...; fi

if [ -e test ];then echo exist;else echo not exist; fi 等價于 [ -e test ] &&echo exist||not exist

echo "1" && echo "2" || echo "3" && echo "4" || echo "5" ||echo "6"&& echo "7" && echo "8" || echo "9"

前面結果為真,則執(zhí)行&& 后面的,否則執(zhí)行|| 內容


  • for 循環(huán)

語句結構:

for((c1;c2;c3));do...done

for循環(huán)第一種使用方式, 定義變量,根據(jù)數(shù)字判斷 示例1:for ((i=0;i<10;i++));do echo $i;done

for循環(huán)第二種方式,遍歷迭代序列中的內容

示例1: array=(1 2 3 4 5),for x in {array[*]}; do echo{x} ;done

示例2: for x in {array[*]}; do echo{x} ;done

  • while 循環(huán)

語句結構:

i=0;while[ i -lt 3];do echo{i}; ((i++));done

當while條件為真,則執(zhí)行do done里面的語句,否則不執(zhí)行do done中的語句

用while一行行讀取文件內容

文檔1 內容為a b c d

while read x; do echo ${x};done<1

">" 輸出重定向;將屏幕內容重定向到指定文件中

"<" 輸入重定向,將文檔1的內容輸出給wile語句中 ,將1賦值給變量x


  • 退出控制
  1. return: 函數(shù)返回

  2. exit:腳本退出

  3. break:退出當前循環(huán),默認為1 示例:for f in * ;do echo {f}; if [ -d{f} ]; then break;fi;done

  4. break 2 :退出兩層循環(huán)

  5. continue: 跳過當前的循環(huán),進入下一次循環(huán) for f in * ;do echo {f};if [ -f{f} ];then echo ${f} is file ;else continue;fi;done

  6. continue 2:跳到上層上層循環(huán)的下一次循環(huán)中


  • Shell的運行環(huán)境
  1. bash 是一個進程,bash下可以再重新啟動一個shell,重新啟動的shell為 子 shell,原shell會復制自身給 子shell,子 shell中的變量會隨著 子 shell的消亡而消失

  2. () 子 shell 中云運行 b=5 (b=1;echo );echo 小括號里面內容在子shell中運行

  3. {} 當前shell中執(zhí)行 { b=11;echo ;}; echo

  4. 獲取當前腳本的執(zhí)行id echo $$

  5. & 后臺執(zhí)行

  6. $! 運行在后臺的最后一個作業(yè)的PID(進程ID)

  7. 創(chuàng)建子shell并退出子shell : bash命令、 exit命令

  8. 啟動暫停任務,sleep 50 按下鍵盤Ctrl +z,處于暫停狀態(tài),bg 3 繼續(xù)執(zhí)行任務,fg 3 將其展示(3是任務的編號)

  9. [圖片上傳失敗...(image-797169-1542868835727)]

    image.png

  • shell 環(huán)境變量
  1. 打開 .bash_profile 設置環(huán)境變量后

  2. 配置執(zhí)行sh腳本的路徑 PATH=PATH:/home/test (引用原有的PATH,添加帶配置的腳本文件路徑到原有PATH上,記住有跟個":”)

  3. 退出保存bash_profile

  4. 執(zhí)行source ~/.bash_profile 將更改的環(huán)境變量文件生效


  • shell 輸入輸出
  1. 輸出重定向 > echo "hello " >1

  2. 輸出追加重定向>> echo "hello +++ hello " >>1

  3. 文本搜索 grep "hello" test.txt

-i 忽略大小寫 cat test.txt | grep -i "hello"

-o 只顯示匹配到內容 cat test.txt | grep -io "hello"

“.” 匹配任意一個字符 echo absc |grep -o 'b.'

” 匹配所有內容 echo absc |grep -o 'b.'


  • 常用命令&快捷鍵:
  1. 快速查找之前的命令:由下往上查找,ctrl + r

  2. 歷史操作過的命令查找:history

  3. 查看文件: cat

  4. 創(chuàng)建文檔并編輯: vim 文件名 點擊鍵盤i ,輸入內容,點擊esc :wq! 強制保存退出

  5. 向鍵盤讀入命令:read 示例: read a;echo {a} -p 提示用戶 read -p "enter:" a;echo{a}

  6. 查看進程(PID): ps

  7. 查看任務狀態(tài):jobs

  8. 將所有隱藏文件都展示出來:ls -al

  9. 顯示文件:ls

  10. 更改文件權限: chmod

  11. 文本搜索命令:grep 搭配正則表達式使用

  12. 訪問一個頁面 :curl
    curl http://www.baidu.com/s?wd=mp3 | less 翻頁查看

    curl -s http://www.baidu.com/s?wd=mp3 | grep -o "結果約[0-9]" [0-9]匹配數(shù)字

    curl -s http://www.baidu.com/s?wd=mp3 | grep -o "結果約[0-9,]* "

    curl -s http://www.baidu.com/s?wd=mp3 | grep -o "結果約[0-9,]" |grep -o "[0-9,]"

“ | grep -o "結果約[0-9,]" |grep -o "[0-9,]" ” 通過grep 不斷把前一項內容向后過濾,直至獲取到想要的內容

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 官網 中文版本 好的網站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,711評論 0 5
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,491評論 3 53
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,537評論 1 19
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,329評論 0 10
  • 今天是朵朵的生日,朵媽在上周就已經跟我溝通需要給孩子準備些什么。我只說了一句:生日信。 為什么是生日信呢? 因為這...
    張燕123閱讀 733評論 0 4

友情鏈接更多精彩內容