shell學習筆記1 【linux shell 編程從初學到精通第2版】
- 已登錄用戶的個數: who | wc -l
- 查看系統有哪些用戶登錄 : who
- 新建一個文件/bin/ct11,在文件中輸入一條命令,chmod為該文件設置執行權限
# cat > /bin/ct11
Who | wc -l
按ctrl+d
# cd /bin
# chmod +x ct11
# ./ct11
執行結果:
2
- # echo 轉義序列:
\c :指示echo 不要打印 最後的換行符號
\a :警示字符,通常是ASCII的BEL字符
\b :退格
\f : 換頁
\n :換行
\r:回車
\t:水平制表符
\v:垂直制表符
\\ :反斜杠字符
\oddd:將字符變成3位的八進制數值
- Printf 語句printf “i said ‘%s,%s1,%s2,%s3’\n” this is my pen
- 清楚屏幕 :clear
- Echo輸入一段文字分行追加到文件cc11: echo -e “werw\nsfsd” >>cc11
- 將aa.txt文件中的ascii回車去除,內容寫到file.txt中
# tr -d ‘\r’ < aa.txt > file.txt
- 將aa.txt文件中的回車去除,然後利用管道對其文件內容排序後輸入到文件file.txt
# tr -d ‘\r’ <aa.txt | sort >file.txt
- 關閉自動打印輸入字符的功能
- 回復自動打印輸入字符的功能 stty echo
- 跟蹤功能 set -x 是執行跟蹤功能打開,set +x是關閉跟蹤功能
Eg: cat > aa.sh
Set -x
Echo ss echo
Set +x
Echo sdf echo
Ctrl +d
Chmod +x aa.sh
./aa.sh執行
- 自動化測試課程目錄
- Shell 傳遞參數
新建一個tst.sh腳本,
nano -w tst.sh
編輯腳本內容如下,$1以後是以此類推第一第二個參數,$0是文件名稱參數
#!/bin/sh
name=$1
echo "my name is ${name}!"
編輯結束後保存 ctrl +o ,退出時ctrl+c
Chmod +x tst.sh 給腳本有執行權限
./tst.sh zhang
執行結果:
My name is zhang
如果是vi模式編輯模式按i,保存並退出按Esc ,:wq!
- unset命令可以刪除變量,刪除後不能再次使用,unset命令不能刪除只讀變量
- 例如:echo -e “jdkfja \n” 輸出結果:jdkfja
- 這裏 -e 表示對轉義字符進行替換。如果不使用 -e 選項,將會原樣輸出:jdkfja\n
- 命令替換是指Shell可以先執行命令,將輸出結果暫時保存,在適當的地方輸出。命令替換的語法:
`command`
註意是反引號,不是單引號,這個鍵位於 Esc 鍵下方。
下面的例子中,將命令執行結果保存在變量中:
- if...then...fi 是條件語句,後續將會講解。
算術運算符列表 |
||
運算符 |
說明 |
舉例 |
+ |
加法 |
`expr a+a+b` 結果為 30。 |
- |
減法 |
`expr a?a?b` 結果為 10。 |
* |
乘法 |
`expr a\*a\*b` 結果為 200。 |
/ |
除法 |
`expr b/b/a` 結果為 2。 |
% |
取余 |
`expr bba` 結果為 0。 |
= |
賦值 |
a=$b 將把變量 b 的值賦給 a。 |
== |
相等。用於比較兩個數字,相同則返回 true。 |
[ a==a==b ] 返回 false。 |
!= |
不相等。用於比較兩個數字,不相同則返回 true。 |
[ a!=a!=b ] 返回 true。 |
註意:條件表達式要放在方括號之間,並且要有空格,例如 [a==a==b] 是錯誤的,必須寫成 [ a==a==b ]。
Shell註釋
1.1 shell註釋 # 整段代碼註釋可以采用花括號括起來,類似函數
1.2 Shell字符串
1.2.1 單引號 str=’this is a string’ 單引號裏不能出現單引號
1.2.2 雙引號 str=”this is a string” 雙引號可以有變量,可以出現轉義字符
1.2.3 拼接字符串 yourname=”jkhj” greeting=”hello,”$yourname”!”
1.2.4 獲取字符串長度 string=”dfa” echo ${#string}
1.2.5 提取子字符串 string=”my name is ending” echo ${string:1:4} 輸出結果:y na
1.2.6 查找字符串 string=”my name is ane” echo `expr index “$string” is `
1.3 Shell 數組
Bash支持一維數組,不支持多維數組,並且沒有限定數組的大小
1.3.1 定義數組
Array_name={1 2 3 4}
或者Array_name={
1
2
3
4
}
單獨定義數組的各個分量:
Array_name[0]=1
Array_name[0]=2
1.3.2 讀取數組
Value=${Array_name[0]}
使用@或者*可以獲取數組中的所有元素
Value=${Array_name[*]}
Value=${Array_name[@]}
1.3.3 獲取數組的長度
num=${#Array_name[@]} 獲取數組元素的個數
Length=${#Array_name[0]} 取得數組第一個元素的長度
1.3 echo 命令
1.3.1 echo “\”It is a test\”” 輸出結果: “It is a test”
1.4 換行
1.4.1 echo “ok!\n” echo “It is a cat”
輸出結果:
Ok!
It is a cat
1.5 顯示不換行
1.5.1 echo “ok!\c”echo “It is a dog”
輸出結果: ok! It is a dog
1.6 顯示結果重定向至文件 echo “It is a test” > myfile
1.7 原樣輸出字符串(不進行轉義),使用單引號 echo ‘$name\”’
1.8 顯示當前日期 echo `date`
1.9 算術運算
- Echo `expr 2 + 2`
- 乘法,echo `expr 4 \* 2`
1.10 關系運算
if [ 3 -lt 8 ]
then
echo ‘true‘
else
echo ‘false‘
Fi
1.11 關閉防火墻
Systemctl stop firewalld.service
1.12 查看shell種類 cat /etc/shells
1.13 新建文件 touch filename
shell學習筆記1 【linux shell 編程從初學到精通第2版】