break與continue
與其他編程相同里的概念相同,代碼示例如下:
# break示例:
while true
do
echo -n "輸入 1 到 5 之間的數(shù)字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數(shù)字為 $aNum!"
;;
*) echo "你輸入的數(shù)字不是 1 到 5 之間的! 游戲結(jié)束"
break
;;
esac
done
# 輸出結(jié)果
輸入 1 到 5 之間的數(shù)字:3
你輸入的數(shù)字為 3!
輸入 1 到 5 之間的數(shù)字:7
你輸入的數(shù)字不是 1 到 5 之間的! 游戲結(jié)束
# continue示例
while true
do
echo -n "輸入 1 到 5 之間的數(shù)字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數(shù)字為 $aNum!"
;;
*) echo "你輸入的數(shù)字不是 1 到 5 之間的! 游戲結(jié)束"
continue
echo "游戲結(jié)束"
;;
esac
done
# 輸出結(jié)果,無法結(jié)束
輸入 1 到 5 之間的數(shù)字:3
你輸入的數(shù)字為 3!
輸入 1 到 5 之間的數(shù)字:7
你輸入的數(shù)字不是 1 到 5 之間的! 游戲結(jié)束
輸入 1 到 5 之間的數(shù)字:
select
選擇一個列表中的一個值,item列表值可以分別單獨寫出來,也可以是一個列表
語法格式如下:
select var in item1 item2..itemN
do
command
done
代碼示例如下:
list=(a b)
PS3="Please select the value:"
select var in ${list[*]};do
break
done
echo "your select is $var"
# 輸出結(jié)果
1) a
2) b
Please select the value:1
your select is a
1.9 函數(shù)
函數(shù)定義
shell中函數(shù)的定義格式如下, 其中return的返回值在[0-225] 之間,如果不加return將以最后一條命令運行結(jié)果,作為返回值.
[ function ] funname()
{
action;
[return int;]
}
示例代碼:
# 完整格式定義函數(shù)
function test1() {
echo "hello world1"
return 0
}
# 簡寫的函數(shù)定義
test2() {
echo "hello world2"
}
# 函數(shù)調(diào)用
test1
# 獲取上一條指令的返回值,緊接著test1之后就是代表獲取test1函數(shù)的返回值
echo $?
test2
# 輸出結(jié)果
hello world1
0
hello world2
函數(shù)參數(shù)
在Shell中,調(diào)用函數(shù)時可以向其傳遞參數(shù)。在函數(shù)體內(nèi)部,通過 $$
n 的形式來獲取參數(shù)的值,例如,
$1表示第一個參數(shù),$2表示第二個參數(shù),依此類推。`$*`表示所有的參數(shù),`$#`表示參數(shù)的個數(shù)
帶參數(shù)的函數(shù)示例:
```
add() {
echo "parmas: $*"
echo "params count:$#"
return $(($1+$2))
}
add 1 2
echo "sum is $?"
# 輸出結(jié)果
parmas: 1 2
params count:2
sum is 3
```
根據(jù)上面的定義來看shell函數(shù)只能返回整形且為0-255之間,那么我們想返回字符串或者數(shù)組有沒有其他辦法呢?
我們可以通過其他方法來實現(xiàn)類似的效果的,示例代碼如下:
**獲取字符串**結(jié)果,調(diào)用的時候通過`$(function_name param)`方式來調(diào)用,那這個函數(shù)里面所有`echo`出來的字符串就會賦值給你的變量,示例如下:
```
hello() {
echo "say hello to $1"
}
result=$(hello world)
echo $result
# 輸出結(jié)果
say hello to world
```
**獲取數(shù)組** ,這個可以通過定義全局變量,在函數(shù)里面對其賦值
```
arr=()
testArray() {
arr[0]=1
arr[1]=2
}
testArray
echo "arr content is ${arr[*]}"
echo "arr size is ${#arr[*]}"
# 輸出結(jié)果
arr content is 1 2
arr size is 2
```
# **2.參考**
bash手冊:https://www.gnu.org/software/bash/manual/bash.html
Zsh手冊: https://zsh.sourceforge.io/Doc/Release/index.html#Top
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208716 -
文本編輯器
+關(guān)注
關(guān)注
0文章
28瀏覽量
8100 -
javascript
+關(guān)注
關(guān)注
0文章
515瀏覽量
53753 -
Shell腳本
+關(guān)注
關(guān)注
0文章
36瀏覽量
7960
發(fā)布評論請先 登錄
相關(guān)推薦
Shell基礎(chǔ)知識(上)
shell腳本在日常的Linux系統(tǒng)管理工作中是必不可少的。如果不會寫shell腳本,你就不算是一個合格的管理員。目前,很多單位在招聘Linux系統(tǒng)管理員時,
發(fā)表于 11-14 09:24
?509次閱讀
Shell腳本編程實驗
指示燈每隔一秒交替閃亮10次按照圖中的腳本一字一句輸入就行了,其中Shell基礎(chǔ)知識一點都不清楚的話多百度下吧,上面有很多相關(guān)知識。這里我就腳本
發(fā)表于 10-22 18:25
Linux中shell腳本執(zhí)的4種方式
Linux中shell腳本的執(zhí)行通常有4種方式,分別為工作目錄執(zhí)行,絕對路徑執(zhí)行,sh執(zhí)行,shell環(huán)境執(zhí)行。
發(fā)表于 05-23 09:28
?899次閱讀
109個實用shell腳本分享
Shell腳本,就是利用Shell的命令解釋的功能,對一個純文本的文件進行解析,然后執(zhí)行這些功能,也可以說Shell腳本就是一系列命令的集合
Linux開發(fā)_Makefile規(guī)則與Shell腳本語言
介紹Linux下Makefile編程知識點,Shell腳本知識點。
shell腳本基礎(chǔ)知識匯總1
Shell 編程跟 JavaScript、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執(zhí)行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見的有:
shell腳本基礎(chǔ)知識匯總2
Shell 編程跟 JavaScript、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執(zhí)行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見的有:
shell腳本基礎(chǔ)知識匯總3
Shell 編程跟 JavaScript、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執(zhí)行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見的有:
shell腳本基礎(chǔ)知識
shell腳本是一個文件,里面存放的是特定格式的指令,系統(tǒng)可以使用腳本解析器翻譯或解析指令并執(zhí)行(無需編譯),shell腳本的本質(zhì)是
Linux Shell腳本經(jīng)典案例分享
? 作為一名 Linux 運維工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網(wǎng)上沖浪的時候,發(fā)現(xiàn)大家對Shell腳本都有“心結(jié)”,要么覺得自己寫出來不好看,要么根本無從下手。 下面分享249個真實
發(fā)表于 06-16 14:03
?622次閱讀
評論