Shell腳本語(yǔ)言基礎(chǔ)(三)

?"-n"使用存在問題?

??錯(cuò)誤代碼

???val="Hello"

???if [ -n $val ]

???then

????echo "存在"

???else

????echo "不存在"

???fi

??正確代碼

???val="Hello"

???if [ -n "$val" ]

???then

????echo "存在"

???else

????echo "不存在"

???fi

內(nèi)容一:Shell腳本語(yǔ)言->文件包含?

?語(yǔ)法一:./filename

??文件A->fileA.sh

???腳本內(nèi)容

????#!/bin/bash

????echo "我是文件A"

??文件B->fileB.sh

???腳本內(nèi)容

????#!/bin/bash

????#文件B包含文件A

????./fileA.sh

????echo "我是文件B"

??執(zhí)行腳本命令

???./fileB.sh

?語(yǔ)法二:sourcefilename.sh

??注意:source是一個(gè)關(guān)鍵字

??文件A->fileA.sh

???腳本內(nèi)容

????#!/bin/bash

????echo "我是文件A"

??文件B->fileB.sh

???腳本內(nèi)容

????#!/bin/bash

????#文件B包含文件A

????source ./fileA.sh

????echo "我是文件B"

??執(zhí)行腳本命令

???./fileB.sh

內(nèi)容二:Shell腳本語(yǔ)言->cat命令->簡(jiǎn)單介紹->后面還會(huì)大量用到

?作用:

??作用一:查看文件內(nèi)容

??作用二:連接文件

??作用三:創(chuàng)建一個(gè)文件或者多個(gè)文件

??作用四:重定向輸出到終端

??作用五:重定向到文件

?語(yǔ)法:cat [選項(xiàng)] [文件]

??

?案例演示

??案例一:查看文件內(nèi)容

???cat fileA.sh

??案例二:cat-nfileA.sh

???-n選項(xiàng):可以顯示文件內(nèi)容和行號(hào)

??案例三:cat -bfileA.sh

???-b選項(xiàng):和"-n"類似功能,但是只標(biāo)記非空白行行號(hào)

??案例四:cat -efileA.sh

???-e選項(xiàng):在每一行內(nèi)容最后加入了一個(gè)"$"符號(hào),在需要將多行內(nèi)容轉(zhuǎn)換為一行內(nèi)容的時(shí)候,非常有用(后面腳本學(xué)習(xí),不是很多)->自己試一試

??案例五:cat

???接收標(biāo)準(zhǔn)輸入,同時(shí)還會(huì)輸出標(biāo)準(zhǔn)輸出(敲回車鍵即可)

???退出:control + c

內(nèi)容三:Shell腳本語(yǔ)言->獲取用戶輸入->read命令

?1、接收一個(gè)輸入內(nèi)容

??寫法一

???echo "請(qǐng)輸入你的名字:"

???read name

???echo "您的名字是:${name}"

??寫法二

???read -p "請(qǐng)輸入你的名字:"name

???echo "您的名字是:${name}"

?2、超時(shí)->輸入時(shí)候,你過(guò)了多少秒沒有輸入,那么過(guò)期

??計(jì)時(shí)器

??if read -t 6 -p "請(qǐng)輸入你的名字:"name

??then

???echo "您的名字是:${name}"

??else

???echo

???echo "超時(shí)"

??fi

?3、隱藏輸入的內(nèi)容->"-s"->類似于輸入密碼

??read -s -p "請(qǐng)輸入您密碼:" pwd

??echo "您的密碼是:${pwd}"

?4、從文件里面讀取內(nèi)容

??cat fileB.sh | while read line

??do

???echo "內(nèi)容:${line}"

??done

??下一節(jié)課:管道

??接收輸入一行:read name

??接收輸入多行:while read name

內(nèi)容四:Shell腳本語(yǔ)言->printf命令使用

?1、printf命令和echo命令區(qū)別?

??區(qū)別一

???printf不會(huì)換行

???echo自動(dòng)換行

??區(qū)別二

???printf:一般用于格式打印

???echo:用于標(biāo)準(zhǔn)輸出

?

?2、printf語(yǔ)法結(jié)構(gòu)

??printf format-string參數(shù)列表

??

?3、printf案例

??案例一

???

???#打印輸出表頭

???printf "%-10s%-8s%-4s \n"姓名性別體重kg

???#打印輸出內(nèi)容

???printf "%-10s %-8s %-4s \n"Andy男64kg

???printf "%-10s%-8s%-4s \n" jar男65kg

???printf "%-10s %-8s %-4s \n"帥牛哥男100kg

???注意一:"%-10s"指的是一個(gè)寬度為10個(gè)字符,"-"表示左對(duì)齊

????假設(shè):%-4s長(zhǎng)度:"AndyAndy"

????s:表示字符串(字符)

???注意二:"%-4.2f"指的是一個(gè)寬度為4,小數(shù)點(diǎn)2位,"f"表示小數(shù)

???…?

???

??案例二

???3.1printfformat-string為雙引號(hào)

????printf "%d %s \n" 1 "Dream"

???3.2printfformat-string為單引號(hào)

????printf '%d %s \n' 1 "Dream"

???3.3printfformat-string沒有號(hào)

????錯(cuò)誤寫法

????printf %d %s 1 "Dream"

????正確寫法->指定一個(gè)允許的

????printf%d"Dream"

???3.4多個(gè)參數(shù)輸出

????printf "%d %s \n" 1 "Dream"

?4、printf轉(zhuǎn)義字符

??printf " "<%s>" " "Dream"??

內(nèi)容五:Shell腳本語(yǔ)言->函數(shù)

?1、語(yǔ)法結(jié)構(gòu)

??[function]方法名稱(){

???邏輯代碼

??}

?2、案例分析?

??定義方法

???functiontestFunc(){

????echo "Hello world"

???}

??調(diào)用方法

???echo "調(diào)用前"

???testFunc

???echo "調(diào)用后"

??swift->典型腳本寫法

???functest(){

???}

內(nèi)容六:Shell腳本語(yǔ)言->輸入/輸出重定向?

?1、學(xué)習(xí)->輸入/輸出重定向->控制臺(tái)/文件

??1.1輸入重定向->語(yǔ)法

???語(yǔ)法結(jié)構(gòu):wc名稱名稱

???

???1.1.1"<":輸入重定向

????命令代碼:wc fileA.sh?

????將fileA中內(nèi)容讀取到控制臺(tái)

????wc讀取到了三個(gè)重要信息

?????第一個(gè)參數(shù):文本行數(shù)

?????第二個(gè)參數(shù):文本詞數(shù)

?????第三個(gè)參數(shù):文本字節(jié)數(shù)

???1.1.2"<<":創(chuàng)建文件

????cat命令

??1.2輸出重定向

???1.2.1 ">":我們把方向指向一份文件,那么將文件中的內(nèi)容刪除,寫入新的內(nèi)容

????腳本文件fileA.sh代碼

?????#!/bin/bash

?????echo "我是文件A"

????腳本文件fileB.sh代碼

?????#!/bin/bash

?????echo "我是文件B"???

?????echo "Hello Dream" > fileA.sh?

????執(zhí)行腳本代碼

?????./fileB.sh?

????總結(jié):替換內(nèi)容->將fileB.sh輸出內(nèi)容替換了fileA.sh中內(nèi)容

???1.2.2 ">>":追加

??通過(guò)腳本語(yǔ)言->操作數(shù)據(jù)庫(kù)

??????


???

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容