shell程式設計入門 if判斷

2021-10-21 20:36:25 字數 4391 閱讀 5849

shell是使用者與linux作業系統之間溝通的橋梁,使用者可以輸入命令執行,又可以利用 shell指令碼程式設計去執行。

1.1 常見shell直譯器如下:

不同的shell語言的語法有所不同,一般不能交換使用,最常用的shell是bash,也就是bourne again shell。bash由於易用和免費,在日常工作中被廣泛使用,也是大多數linux作業系統預設的shell環境。

1.2 第乙個指令碼:

#!/bin/bash

#by lutixia

#2020-03-10

#############################

echo "hello world"

1.3 指令碼執行方式:
### 方式一:

chmod +x hello.sh

./hello.sh

### 方式二:

bash hello.sh

### 方式三:

. hello.sh

ps:以上三種執行方式,第一種需要有可執行許可權,後面兩種不需要可執行許可權。前兩種是在子shell中執行,最後一種是直接在父程序執行,也就是會直接影響當前shell程序。

2.1 系統變數:

shell常見的變數之一系統變數,主要是用於對引數判斷和命令返回值判斷時使用,系統變數詳解如下:

$0 							   當前指令碼的名稱;

$n 當前指令碼的第n個引數,n=1,2,…9;

$* 當前指令碼的所有引數(不包括程式本身);

$# 當前指令碼的引數個數(不包括程式本身);

$? 命令或程式執行完後的狀態,返回0表示執行成功;

$$ 程式本身的pid號。

2.2 環境變數:

shell常見的變數之二環境變數,即程式執行時的環境,環境變數詳解如下:

path  							命令所示路徑,以冒號為分割;

home 列印使用者家目錄;

shell 顯示當前shell型別;

user 列印當前使用者名稱;

id 列印當前使用者id資訊;

pwd 顯示當前所在路徑;

term 列印當前終端型別;

hostname 顯示當前主機名。

2.3 使用者變數:

shell常見的變數之三使用者變數,使用者變數又稱為區域性變數,主要用在shell指令碼內部或者臨時區域性使用,使用者變數詳解如下:

nginx_version=nginx-1.18.0.tar.gz  		自定義變數nginx_version;

prefix=/usr/local/nginx 自定義變數prefix;

### 範例:

#!/bin/bash

#by lutixia

#2021-03-10 20:12:36

#############################

echo -e '\033[32m-----------------------------\033[0m'

pkg_name=nginx

url=

echo -e "\033[36m請選擇你的操作:\033[0m"

echo

echo "2)編譯安裝$pkg_name伺服器"

echo "3)啟動$pkg_name伺服器"

echo -e '\033[32m-----------------------------\033[0m'

if條件判斷語句,通常以if開頭,fi結尾。也可加入else或者elif進行多條件的判斷,if表示式如下:

if 條件

then

commands

fi或者:

if 條件;then

commands

else

commands

fi或者:

if 條件;then

commands

elif 條件

commands

else

commands

fi

if語句會執行if後面的那個條件(命令),如果該命令的退出狀態碼是0(該命令成功執行),位於then部分的命令就會被執行。如果該命令的退出狀態碼是其他值, then部分的命令就不會被執行,bash shell會繼續執行指令碼中的下乙個命令。

3.1 數值的比較條件:

n1  -eq  n2						檢查n1是否與n2相等

n1 -ge n2 檢查n1是否大於或等於n2

n1 -gt n2 檢查n1是否大於n2

n1 -le n2 檢查n1是否小於或等於n2

n1 -lt n2 檢查n1是否小於n2

n1 -ne n2 檢查n1是否不等於n2

3.1.1 範例猜數字:
#!/bin/bash

#by lutixia

#############################

num=60

read -p "請輸入你的數字:" number

if [ $number -gt $num ];then

echo "猜大了哦,再猜一次。"

elif [ $number -lt $num ];then

echo "猜小了哦,再猜一次。"

else

echo "猜中啦,真棒!"

fi

3.2 字串的比較條件:
str1 = str2						檢查str1是否和str2相同

str1 != str2 檢查str1是否和str2不同

str1 < str2 檢查str1是否比str2小

str1 > str2 檢查str1是否比str2大

-n str1 檢查str1的長度是否非0

-z str1 檢查str1的長度是否為0

3.2.1 範例:
#!/bin/bash

#by lutixia

#############################

read -p "請輸入你要安裝的軟體包名:" name

if [ "$name" = "nginx" ];then

yum install $name -y

elif [ -z "$name" ];then

echo "你還沒有輸入包名!"

fi

3.3 檔案的比較條件:
-d file							檢查file是否存在並是乙個目錄

-e file 檢查file是否存在

-f file 檢查file是否存在並是乙個檔案

-r file 檢查file是否存在並可讀

-s file 檢查file是否存在並非空

-w file 檢查file是否存在並可寫

-x file 檢查file是否存在並可執行

-o file 檢查file是否存在並屬於當前使用者所有

-g file 檢查file是否存在並預設組與當前使用者相同

file1 -nt file2 檢查file1是否比file2新

file1 -ot file2 檢查file1是否比file2舊

3.3.1 範例
#!/bin/bash

#by lutixia

#############################

if [ ! -d /usr/local/redis/ ];then

cd /usr/src/

if [ ! -f redis-5.0.5.tar.gz ];then

wget -c

fitar xf redis-5.0.5.tar.gz

cd redis-5.0.5

make prefix=/usr/local/redis/ install

fi

shell程式設計入門

shell指令碼程式不是複雜的程式,它是按行解釋的。指令碼程式總是以 bin sh 開始,它通知shell使用系統上的bourne shell直譯器。其中 符號是注釋。指令碼程式是從上到下執行的,執行指令碼前需要改變該指令碼程式的執行許可權。確保正確建立指令碼例徑,只有 這樣,指令碼程式才能正確執行...

Shell 程式設計入門

首先建立乙個檔案 在終端中輸入如下命令 vi helloworld.sh 然後按i進行命令編寫 下面這句話是必須寫的 bin sh這句話是必須寫的 bin sh a hello world echo a 下面執行的時候先得輸入 將這個許可權改為可執行檔案 chmod x helloworld.sh ...

Shell程式設計入門

目錄 shell概述 shell解析器 shell指令碼 什麼是shell指令碼 編寫shell指令碼 1 指令碼格式 2 第乙個shell指令碼 helloworld 3.指令碼的常用執行方式 第一種 採用bash或sh 指令碼的相對路徑或絕對路徑 不用賦予指令碼 x許可權 第二種 採用輸入指令碼...