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