字符串
1.字符串的拼接
引用字符串的值,并將多個字符串的值作為新的字符串賦給新變量
2字符串的長度
lenth=${#string} 注意此時的#不再是注釋,表示字符串的長度
例如:
lenth1=${#string1}
lenth2=${#string2}
lenth3=${#str}
echo "$string1 :" lenth1
echo "$string2 :" lenth2
echo "$str:" lenth3
3字符串的分割
nstr=${string:a:b} 從字符串string的第a個字符后開始截取b個字符,附給新的變量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 #錯誤{error}
echo $num //只讀變量的值不可更改!!!
3.清除變量的值
um=333
echo $num
unset num
echo $num
unset 是清除變量的值,若變量未定義直接使用,起始值為空。
強調:(1)Shell程序必須指定腳本的解釋程序,
即在Shell腳本程序的第一行必須是: #!/bin/bash
(2)空格問題
變量賦值時,“=” 兩邊不可有空格
字符串的空格問題
其他情況:盡量加空格
4.權限問題
sudo chmod a+x read.sh 所有用戶
sudo chmod u+x,g+x read.sh 擁有者和同組用戶,用 “,”隔開
sudo chmod +x read.sh 所有用戶
sudo chmod 777 read.sh 所有用戶所有權限
5.從鍵盤獲取變量值
read:在沒有輸入時,則等待輸入
read 變量1 變量2 變量3 //輸入時,同樣輸空格隔開變量
將輸入的第一個值賦給變量1,第二個值賦給變量2,剩余的值全部賦給最后一個變量,依次類推,但不建議使用
6.Shell的三大語句
功能型語句、說明性語句、結構分支語句
(1)說明型語句
以#開頭的語句,至行末均為說明性語句,說明型語句不解釋執行(整行),即注釋
說明型語句的位置可以在程序中的任意位置,可以放在解釋執行語句之后,從#開始的部分到行末。
“#”只能注釋一行
(2)功能型語句
系統命令,自寫程序....(平常輸入的命令)
(3)結構型語句
多路分支語句,循環語句,循環控制語句,測試語句,條件語句
7.加、減、乘、除、取余(整數)
expr或 let:針對整數做簡單的運算
sum1=expr $num1 + $num2
必須要有空格
sum2=expr $num1 \* $num2
let sum1=num1+num2
let sum2=num1*num2
乘法“*”,\轉義字符為去掉的原意,告訴解釋器為乘法
``:取得結果集
$():取得結果集 二者執行效果相同*
8.條件測試語句
test 測試語句
[ 條件測試語句 ]: 注意[] 中的空格!!!
-e file:測試file是否存在
-d file:測試file是否是目錄
-f file:測試file是否是文件
-r file:測試file是否可讀
-w file:測試file是否可寫
-x file:測試file是否可執行
整數測試
-eq:是否相等 equal
-ne:是否不等 not equal
-gt:是否大于 greater than
-ge:是否大于等于 greater equal
-lt:是否小于 less than
-le:是否小于等于 less equal
字符串比較:
-z string:string長度是否為零
-n string:若string非零,為真
string = string1:是否相同
string != string2:是否不同
echo -n:不換行輸出
邏輯操作符:
&&:邏輯與
事件1 && 事件2:當事件1和事件2都為真,則為真
||:邏輯或
事件1 || 事件2:當事件1或事件2為真,則為真
-a:and
-0:or
常見變量:
$?:命令執行后的返回狀態,返回零表示執行成功
$*:所以參數列表
$@:所以參數列表
$#:傳遞到腳本的參數個數
$0:可執行命令本真,不是位置參數
9.if語句
(1)if [ 條件 ]
then
命令
fi
(2)if [ 條件 ]
then
命令
elif [ 條件 ]
then
命令
else
命令
fi
10.case
case 值 in
值1)
命令
;;
值2)
命令
;;
*)
命令
;;
esac
|:多重選擇
?:任意一個字符
*:任意多個字符
12.for循環
for 值 in 值列表
do
for 值 in 列表
do
命令
done
done
===============
for((i=1;i<9;i++))
do
執行語句
done
注意:for循環值列表可以省略
13.while
while [ 條件 ]
do
命令
done
總結
·暫時對Linux中許多命令行的操作不夠熟練也經常性遺忘,通過今天開小組會議我知道強行記性是沒什么效果的,更加堅定了我多練的想法,雖然我暫時練習不夠,有時也有點懶,但我會盡可能克服的。
·我覺得在學習中雖然注重方法,但興趣也是很關鍵的,我很慶幸,在我接觸程序的這段時間以來,我能發覺自己已經有一定的興趣,上課環境也很好,學習的過程并不是那么的枯燥,我會投入更多的精力迎接下面的課程。