02-shell基礎

1.shell的概述

  • Linux提供的shell解釋器:
    在這裏插入圖片描述
  • cent os 默認的解釋器是/bin/bash

2.第一個shell腳本

touch hello.sh
vi hello.sh 
## 文件內容
#!/bin/bash
echo "hello world"
## 修改權限
chmod 777 hello.sh
## 執行(3種)
./hello.sh
sh hello.sh(無需權限)
bash hello.sh(無需權限)

3.變量

3.1普通變量

## 系統變量
$HOME$PWD$SHELL$USER## 自定義變量 變量名 = 值 
## 撤銷變量 unset(readonly不可撤銷)
$ A = 5 
echo $A

3.2特殊變量

  • $n:n爲數字,$0代表該腳本名稱,$1-99代表第一到第九個參數,十以上的參數,十以上的參數需要用大括號包含,如{10}
  • $#:獲取所有輸入參數個數,常用於循環
  • *:這個變量代表命令行中所有的參數,*把所有的參數看成一個整體
  • @@:這個變量也代表命令行中所有的參數,不過@把每個參數區分對待
  • $?:最後一次執行的命令的返回狀態。如果這個變量的值爲0,證明上一個命令正確執行;如果這個變量的值爲非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。

4.運算符

## 基本語法$((運算式))”或“$[運算式]expr  + , - , \*,  /,  %    加,減,乘,除,取餘
注意:expr運算符間要有空格
## 操作
expr 2 + 3   //結果5
expr 2+3  	//結果2+3
## 計算(2+3)X4的值
expr `expr 2 + 3` \* 4
S=$[(2+3)*4]

5.條件判斷

在這裏插入圖片描述

## 判斷兩個數大小
[ 25 -ge 20 ] 	
echo $?	//結果0
## helloworld.sh是否具有寫權限
[ -w helloworld.sh ]
echo $?
0
##	判斷文件是否存在
[ -e /usr/local/kafka ]
echo $?

6.流程控制

6.1if

## 基本語法
if [ 條件判斷式 ];then 
  程序 
fi 
或者 
if [ 條件判斷式 ] 
  then 
    程序 
elif [ 條件判斷式 ]
	then
		程序
else
	程序
fi
  • 注意事項:
    (1)[ 條件判斷式 ],中括號和條件判斷式之間必須有空格
    (2)if後要有空格

6.2case 語句

##基本語法
case $變量名 in 
  "值1") 
    如果變量的值等於值1,則執行程序1 
    ;; 
  "值2") 
    如果變量的值等於值2,則執行程序2 
    ;; 
  …省略其他分支… 
  *) 
    如果變量的值都不是以上的值,則執行此程序 
    ;; 
esac
  • 注意事項:
    1)case行尾必須爲單詞“in”,每一個模式匹配必須以右括號“)”結束。
    2)雙分號“;;”表示命令序列結束,相當於java中的break。
    3)最後的“*)”表示默認模式,相當於java中的default。

7.循環

7.1for

## 基本語法1
	for (( 初始值;循環控制條件;變量變化 )) 
  do 
    程序 
  done
  ## 從1加到100
#!/bin/bash

s=0
for((i=0;i<=100;i++))
do
        s=$[$s+$i]
done
echo $s
## 基本語法2
for 變量 in 值1 值2 值3… 
  do 
    程序 
  done
  ## 打印所有的輸入參數
  #!/bin/bash
#打印數字
for i in $*
    do
      echo "我喜歡 $i "
    done

7.2while

## 基本語法
while [ 條件判斷式 ] 
  do 
    程序
  done
  ## 從1加到100
  #!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
        s=$[$s+$i]
        i=$[$i+1]
done

echo $s

8.系統函數

  • basename [string / pathname] [suffix] (功能描述:basename命令會刪掉所有的前綴包括最後一個(‘/’)字符,然後將字符串顯示出來。
    選項:
    suffix爲後綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。
basename /use/local/1.txt
## 結果
1.txxt
basename /use/local/1.txt .txt
1
  • dirname基本語法
    dirname 文件絕對路徑 (功能描述:從給定的包含絕對路徑的文件名中去除文件名(非目錄的部分),然後返回剩下的路徑(目錄的部分))
dirname /usr/local/1.txt
## 結果
/usr/local

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章