遺留問(wèn)題:
string =“hello,world!”
printf “%s\n” $string
printf "%s\n" "hello,world"
printf "%s\n" hello,world
printf "%s\n" "${string}"
三種寫(xiě)法:
$string ${string} "${string}"
pritnf打印字符串:
若變量的值中有空格,則打印時(shí)應(yīng)使用“$變量名”,字符串賦值時(shí),若值中有空格,用“”括起來(lái)
變量名=“hello,world”
$引用變量,不能夠把“”一起引用,因此打印時(shí)需要“$變量名”
1.字符串的拼接
(1)引用字符串的值,并將多個(gè)字符串的值作為新的字符串賦給新的變量,即str="$string $string1"
(2)字符串的長(zhǎng)度
lenth=${#string}
注意:此時(shí)的#不再是注釋?zhuān)硎居?jì)算字符串的長(zhǎng)度
?。?)字符串的分割
nstr=${string:a:b}
把字符串string從第a個(gè)開(kāi)始截取b個(gè)字符,賦給新的變量nstr
2.readonly:只讀
read only num=2
echo $num
num=88
echo $num
只讀變量不可更改!
3.清除變量的值
num=33
echo $num
unset num
echo $num
注意:unset是清除變量的值。若變量未定義直接使用,其值為空
4.再次強(qiáng)調(diào)
(1)shell程序必須指定腳本的解釋程序,即在shell腳本程序的第一行必須是:# !、bin/bash
?。?)空格問(wèn)題
變量賦值時(shí),=兩邊不可有空格
其他情況:
盡量加空格
5.從鍵盤(pán)獲取變量的值
read:在沒(méi)有輸入時(shí),則一直等待輸入。
read 變量1 變量2 變量3?。捍吻闆r將輸入的第一個(gè)值賦值給變量1,第二給變量2,剩余的值全部給變量3,不建議熱用read num1 num2 num3……這種獲得變量值得方法。
建議:
read num1
read num2
read num3
6.權(quán)限問(wèn)題
r:可讀 w:可寫(xiě) x:可執(zhí)行
sudo chmod a+x filename
sudo chmod u+x,g+x filename
sudo chmod +x filename
sudo chmod 777 filename
7.shell的三大語(yǔ)句
功能型語(yǔ)句,說(shuō)明型語(yǔ)句,結(jié)構(gòu)分支語(yǔ)句
?。?)說(shuō)明型語(yǔ)句
以#開(kāi)頭的語(yǔ)句,至末行均為說(shuō)明型語(yǔ)句,說(shuō)明型語(yǔ)句不解釋執(zhí)行(整行),即注釋。說(shuō)明型語(yǔ)句的位置可以程序中的任何位置,可以放在解釋執(zhí)行語(yǔ)句之后,從#開(kāi)始的部分到末行,#只能注釋一行
?。?)功能型語(yǔ)句
系統(tǒng)命令,自寫(xiě)程序……
?。?)結(jié)構(gòu)分支語(yǔ)句
多路分支語(yǔ)句,循環(huán)語(yǔ)句,循環(huán)控制語(yǔ)句,測(cè)試語(yǔ)句,條件語(yǔ)句
結(jié)構(gòu)性語(yǔ)句:加減乘除,取余(整數(shù))
8.條件測(cè)試語(yǔ)句
test 測(cè)試語(yǔ)句
[ 條件測(cè)試語(yǔ)句 ] :注意[]中的空格??!
-e file:測(cè)試file的是否存在
-d file:測(cè)試file是否是目錄
-f file:測(cè)試file是否是文件
-r file:測(cè)試file是否可讀
-w file:測(cè)試file是否可寫(xiě)
-x file:測(cè)試file是否可執(zhí)行
整數(shù)測(cè)試:
-eq:是否相等
-ne:是否不等
-gt:是否大于
-ge:是否大于等于
-lt:是否小于
-le:是否小于等于
-z:string :string長(zhǎng)度是否為零
-n string?。喝魋tring非零,為真
string=string:是否相同
string!=string1
常見(jiàn)
9.加,減,乘,除,取余
expr let:針對(duì)整數(shù)做簡(jiǎn)單的加減乘除,取余(整數(shù))
expr :
sum=expr $num + $num1
sum1=expr $num \* $num1
注意空格
let :
let sum =num+num1
let sum1=num*num1
乘法*:是去掉*的原來(lái)的意思,告訴解釋器
10.if語(yǔ)句
(1)if [ 條件 ]
then
命令
fi
(2) if [ 條件 ]
then
命令
elif [ 條件 ]
then
命令
else
命令
fi