?"-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ù)
??????


???