Linux橋樑工具之shell
shell 常用命令
基本與Linux相同, 但也有不同的地方
1.比如流程控制語句if
if [ condition ]
then
程式
elif
else
fi(反向if,代表結束)
2.判斷表示式[ condition ](括號前後要空格) 和 計算表示式 $[ 5+6 ]
example
[ 32 -le 32 ] (命令-le前後也要空格)
3.for迴圈列外可以寫如下格式
for((i=0;i<=100;i++)) "可以使用後<=和i++ 但其他迴圈不能使用 只可用 -lt -e 等比較命令判斷"
do
命令程式
done
while [ 條件 ]
do
程式
done
4.case語句不同與java
case $變數名 in
"值1")
等於值1時的命令
;;(此處2個分號相當於break)
"值2")
命令2
;;
*) 這個等於default語句值
預設命令程式
;;
esac (反向拼寫case代表結束)
5. read讀取控制檯輸入
read -t 7 -p "Enter your name in 7 seconds" NAME
-t (time)表示等待多久輸入引數
-p (print)等待是控制檯列印提示
Name 為語句傳入的引數
echo $NAME (列印引數)
6 .運算子
“$((運算式))”或“$[運算式]”
如計算(2+3)
S=$[(2+3)*4]
echo $S
7.basename系統函式
basename [string /pathname] [suffix] (這個是字尾,如果寫了字尾,輸出時會刪掉字尾名顯示)
(功能描述:basename命令會刪掉所有的字首包括最後一個(‘/’)字元,然後將字串顯示出來。
Shell 工具類
1.cut 剪下
-f 提取第幾列
-d 按指定分隔符分開
cut -d ": " -f 2 file
(file要全部檔名,如 nihao .txt)
2.awk(三個人開發的名字組合,無意義)用與分隔篩選
- -F fsfs指定輸入分隔符,fs可以是字串或正則表示式,如-F:
- -v var=value賦值一個使用者定義變數,將外部變數傳遞給awk
- 內建變數大寫才有用
- FILENAME
- NR 現在讀取到第幾行
- NF 切割後有多少列
awk -F ":" -v i=1 'BEGIN{ print "start" } pattern{ commands + i} END{ print "end" }' file
(-F以冒號:分隔檔案 ,-V 用來自定義引數,用於之後表示式內,pattern可以是條件表示式,正則表示式,begin end只輸出一次 ,file 即檔名)
3.sort
-n 大小排序
-r 反轉大小排序
-k 選擇第幾列排序
-t 用什麼分隔來排序
例句:
sort -t ":" -nrk 4 file名
系統預定義好的變數
1.指令碼的常用執行方式
第一種
採用bash 或sh +指令碼路徑
如:sh /home/atguigu/datas/helloworld.sh
第二種
修改許可權後 輸入指令碼的路徑
chmod +x 檔案路徑
執行指令碼
./路徑 或 /路徑
第三種 指令碼路徑前直接加 " . " 然後空格 路徑
一二種是再當前shell開啟子shell執行指令碼,然後關閉子shell 回到 父shell
第三種是在當前shell指令碼直接執行,不切換shell
2.顯示當前shell 的所有變數
命令:
set
3.特殊字元的意義
$0 指令碼名字
$n 第n個引數 10 以上要用大括號 如 ${10}
$# 所有引數的個數
$* 整體輸入引數
$@ 分別輸入
$? 最後命令的執行狀態 0表示執行成功