日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

shell 语法介绍

發布時間:2023/11/13 C# 67 coder
生活随笔 收集整理的這篇文章主要介紹了 shell 语法介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是藍胖子,在日常開發中或多或少都會接觸到shell腳本,可以說會shell腳本是一位后端開發的基本功,今天我將會花上一篇文章總結下常見的shell的語法,學完本篇,相信簡單的shell腳本就能夠看懂了,一些比較高級的語法可以遇到的時候再去學習。

我認為學習一門編程語言語法的時候,最基本的無外乎就是語言中的類型定義,以及循環或if else等跳轉指令,懂了這兩個以后,便能寫一些簡單的邏輯了。所以shell語言也不例外,我也會從這兩個角度去介紹。

變量定義

首先看下shell中對變量的定義,其中分為環境變量和局部變量。

環境變量在子shell進程中是可見的,可以通過export 關鍵字進行定義,如下所示,

[root@localhost ~]# export VAR=value

局部變量是指在某個shell中生效的變量,這個變量在其他shell中是無效。

變量的定義

變量的定義可以通過如下方式進行定義,

變量名=變量值,

[root@localhost ~]# name=john 

注意點一:變量名和變量值之間用等號緊緊相連,之間沒有任何空格
注意點二:當變量中有空格時必須用引號(單引號,雙引號都可以)括起,否則會出現錯誤

變量的引用

定義了變量,那么如何對其進行引用呢?可以通過如下方式對變量進行引用,

在變量前面加上$ 符號即可。

(base) ?  ~ name=lanpangzi
(base) ?  ~ echo $name
lanpangzi

更標準點的寫法是用${}將變量名括起來。

(base) ?  ~ echo ${name}
lanpangzi

位置參數

除了通過${變量名} 方式引用變量,還可以通過 $數字 方式獲取shell腳本的參數,$0 代表第一個參數,$1 代表第二個參數,依次類推。 另外 $# 代表參數的個數, $* 或者 $@代表所有參數,例如我寫一個腳本 輸出這些變量。

腳本如下,

!/bin/sh
echo "第一個參數: $0"
echo "第二個參數: $1"
echo "所有參數: $@"
echo "參數個數: $#"

運行這個腳本

(base) ?  ~ sh print.sh wudi lanoangzi
print.sh: line 1: !/bin/sh: No such file or directory
第一個參數: print.sh
第二個參數: wudi
所有參數: wudi lanoangzi
參數個數: 2

注意下shell腳本中單引號和雙引號的區別,如果要讓輸出的語句中引用變量,那么要用雙引號。

數組的語法

另外,在shell腳本中還有個經常用到的類型,數組,與其他語言不同的是,shell腳本中的數據只支持一維數組。

數組的定義方式如下,

declare 關鍵字定義數組,其中元素用()括起來,并且元素之間用空格隔開。

declare arr1=(元素1 元素2)

數組中的元素引用方式如下,

echo ${數組名[索引號]}

比較特殊的是可以通過 ${數組名[@]} 或者 ${數組名[*]} 獲取數組中的 元素, 可以通過 ${#數組名[@]} 或者 ${#數組名[*]} 獲取數組的長度。

對數組中元素替換和新增數組元素可以按如下操作,

對指定位置的變量進行替換

數組名[索引值]=30

假設數組名是arr,對數組末尾進行元素添加,

arr[${#arr[@]}]=30

循環以及判斷語句

看了變量的定義,我們再來看看shell腳本中的跳轉指令,在學跳轉指令前還需要對shell中如何對表達式獲取表達式的結果有所了解,因為一般跳轉指令都是條件跳轉,像if else之類的語句,總有個判斷條件。

表達式結果

在shell中可以通過$? 獲取上一個shell語句的執行結果,shell命令中規定0才是命令正確執行后的返回結果,其余結果都是不正確的。

讓表達式執行比較邏輯的方式有兩種,

1, 第一種是通過test expression 的方式,test后面跟表達式,如下所示,比較了兩個數字是否相等,返回1說明相等。

(base) ?  ~ test 1 -eq 2
(base) ?  ~ echo $?
1

2, 第二種方式是使用[] 把表達式括起來,這種方式注意[] 內變量需要與括號相隔一個空格才行。

(base) ?  ~ [ 1 -eq 2 ]
(base) ?  ~ echo $?
1

字符串比較

接著來看下shell中如何對字符串進行比較,

字符串的比較是可以用> < 這種符號的,數字則不同。

數字比較

文件相關的判斷

除了數字和字符串的比較,我們平時還經常會用到對文件的判斷,比如判斷文件是否存在等,如下是對文件相關操作的判斷。

if 語句

了解了判斷語句就可以看看跳轉指令的語法,首先我們看下if語句在shell中是如何寫的。

if expression; then 
		command 
fi

通過if then fi三個關鍵字組成了最簡單的if語句,其中expression則是前面講到的判斷語句的表達式,如下,執行這個腳本將會輸出,123 和456兩行數據。

!/bin/sh
num=1
if test $num -eq 1 ;then
        echo 123
fi
if [ $num -eq 1 ] ;then
        echo 456
fi

if else 語句也類似,它的語法結構如下,

if expression; then 
	command 
else 
	command 
fi

for while循環語句

for 語法結構

for VARIABLE in (list) 
do 
	command 
done

for語句可以遍歷一個列表然后對其中每一個元素進行遍歷。上述語法中,list既可以是變量也可以是固定數組表達式,也可以命令輸出。

案例1,數組變量 循環

!/bin/sh
arr="1 2 3 4"
for num in ${arr}
do
   echo $num
done

案例2,固定數組表達式循環

!/bin/sh
for num in 1 2 3 4
do
   echo $num
done

案例3,命令輸出結果 循環

!/bin/sh
for num in $(ls)
do
   echo $num
done

while 語法結構

while expression 
do 
	command 
done

表達式的語法也和之前if 語句那里講的語法結構類似,這里就不再展開了。

總結

這一節簡單的介紹了shell最基本的語法,掌握了這些,便可以簡單的寫一些最基本的腳本了。函數的聲明和調用可以等用到的時候再學,后續也會介紹一些shell腳本的實際案例來鞏固下這部分的內容。

總結

以上是生活随笔為你收集整理的shell 语法介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。