字符串
1.字符串的拼接
引用字符串的值疙挺,并將多個(gè)字符串的值作為新的字符串賦給新變量
2字符串的長(zhǎng)度
lenth=${#string} 注意此時(shí)的#不再是注釋,表示字符串的長(zhǎng)度
例如:
lenth1=${#string1}
lenth2=${#string2}
lenth3=${#str}
echo "$string1 :" lenth1
echo "$string2 :" lenth2
echo "$str:" lenth3
3字符串的分割
nstr=${string:a:b} 從字符串string的第a個(gè)字符后開始截取b個(gè)字符增淹,附給新的變量nstr
例如:
nstr1=${string1:1:2}
nstr2=${string2:2:1}
nstr3=${str:4:5}
printf "nstr1:%\n" "$nstr1"
printf "nstr2:%\n" "$nstr2"
printf "nstr3:%\n" "$nstr3"
2.只讀:readonly
readonly
num=34
echo $num
num=88 #錯(cuò)誤{error}
echo $num //只讀變量的值不可更改E芬?迕健!
3.清除變量的值
um=333
echo $num
unset num
echo $num
unset 是清除變量的值猫胁,若變量未定義直接使用箱亿,起始值為空。
強(qiáng)調(diào):(1)Shell程序必須指定腳本的解釋程序弃秆,
即在Shell腳本程序的第一行必須是: #!/bin/bash
(2)空格問題
變量賦值時(shí)届惋,“=” 兩邊不可有空格
字符串的空格問題
其他情況:盡量加空格
4.權(quán)限問題
sudo chmod a+x read.sh 所有用戶
sudo chmod u+x,g+x read.sh 擁有者和同組用戶,用 “菠赚,”隔開
sudo chmod +x read.sh 所有用戶
sudo chmod 777 read.sh 所有用戶所有權(quán)限
5.從鍵盤獲取變量值
read:在沒有輸入時(shí)脑豹,則等待輸入
read 變量1 變量2 變量3 //輸入時(shí),同樣輸空格隔開變量
將輸入的第一個(gè)值賦給變量1衡查,第二個(gè)值賦給變量2瘩欺,剩余的值全部賦給最后一個(gè)變量,依次類推拌牲,但不建議使用
6.Shell的三大語(yǔ)句
功能型語(yǔ)句俱饿、說(shuō)明性語(yǔ)句、結(jié)構(gòu)分支語(yǔ)句
(1)說(shuō)明型語(yǔ)句
以#開頭的語(yǔ)句塌忽,至行末均為說(shuō)明性語(yǔ)句拍埠,說(shuō)明型語(yǔ)句不解釋執(zhí)行(整行),即注釋
說(shuō)明型語(yǔ)句的位置可以在程序中的任意位置土居,可以放在解釋執(zhí)行語(yǔ)句之后枣购,從#開始的部分到行末。
“#”只能注釋一行
(2)功能型語(yǔ)句
系統(tǒng)命令擦耀,自寫程序....(平常輸入的命令)
(3)結(jié)構(gòu)型語(yǔ)句
多路分支語(yǔ)句棉圈,循環(huán)語(yǔ)句,循環(huán)控制語(yǔ)句眷蜓,測(cè)試語(yǔ)句分瘾,條件語(yǔ)句
7.加、減吁系、乘芹敌、除、取余(整數(shù))
expr或 let:針對(duì)整數(shù)做簡(jiǎn)單的運(yùn)算
sum1=expr $num1 + $num2
必須要有空格
sum2=expr $num1 \* $num2
let sum1=num1+num2
let sum2=num1*num2
乘法“*”,\轉(zhuǎn)義字符為去掉的原意垮抗,告訴解釋器為乘法
``:取得結(jié)果集
$():取得結(jié)果集 二者執(zhí)行效果相同*
8.條件測(cè)試語(yǔ)句
test 測(cè)試語(yǔ)句
[ 條件測(cè)試語(yǔ)句 ]: 注意[] 中的空格!1檀稀冒版!
-e file:測(cè)試file是否存在
-d file:測(cè)試file是否是目錄
-f file:測(cè)試file是否是文件
-r file:測(cè)試file是否可讀
-w file:測(cè)試file是否可寫
-x file:測(cè)試file是否可執(zhí)行
整數(shù)測(cè)試
-eq:是否相等 equal
-ne:是否不等 not equal
-gt:是否大于 greater than
-ge:是否大于等于 greater equal
-lt:是否小于 less than
-le:是否小于等于 less equal
字符串比較:
-z string:string長(zhǎng)度是否為零
-n string:若string非零,為真
string = string1:是否相同
string != string2:是否不同
echo -n:不換行輸出
邏輯操作符:
&&:邏輯與
事件1 && 事件2:當(dāng)事件1和事件2都為真逞姿,則為真
||:邏輯或
事件1 || 事件2:當(dāng)事件1或事件2為真辞嗡,則為真
-a:and
-0:or
常見變量:
$?:命令執(zhí)行后的返回狀態(tài)捆等,返回零表示執(zhí)行成功
$*:所以參數(shù)列表
$@:所以參數(shù)列表
$#:傳遞到腳本的參數(shù)個(gè)數(shù)
$0:可執(zhí)行命令本真,不是位置參數(shù)
9.if語(yǔ)句
(1)if [ 條件 ]
then
命令
fi
(2)if [ 條件 ]
then
命令
elif [ 條件 ]
then
命令
else
命令
fi
10.case
case 值 in
值1)
命令
续室;栋烤;
值2)
命令
;挺狰;
*)
命令
明郭;;
esac
|:多重選擇
丰泊?:任意一個(gè)字符
*:任意多個(gè)字符
12.for循環(huán)
for 值 in 值列表
do
for 值 in 列表
do
命令
done
done
===============
for((i=1;i<9;i++))
do
執(zhí)行語(yǔ)句
done
注意:for循環(huán)值列表可以省略
13.while
while [ 條件 ]
do
命令
done
總結(jié)
·暫時(shí)對(duì)Linux中許多命令行的操作不夠熟練也經(jīng)常性遺忘薯定,通過今天開小組會(huì)議我知道強(qiáng)行記性是沒什么效果的,更加堅(jiān)定了我多練的想法瞳购,雖然我暫時(shí)練習(xí)不夠话侄,有時(shí)也有點(diǎn)懶,但我會(huì)盡可能克服的学赛。
·我覺得在學(xué)習(xí)中雖然注重方法年堆,但興趣也是很關(guān)鍵的,我很慶幸盏浇,在我接觸程序的這段時(shí)間以來(lái)变丧,我能發(fā)覺自己已經(jīng)有一定的興趣,上課環(huán)境也很好缠捌,學(xué)習(xí)的過程并不是那么的枯燥锄贷,我會(huì)投入更多的精力迎接下面的課程。