Shell函數操作總結

Shell函數操作

echo

#! /bin/bash

echo "Hello World !"

如何運行shell文件

終端輸入?

`sh 腳本的文件名.sh`

變量

?定義變量

注意:等號兩邊不能有空格,否則會識別成指令

variable="some value"

讓變量只讀

readonly variable

刪除變量

unset variable_name

使用變量(前面需要加美元符號)

echo $variable

echo $(variable)

腳本參數

傳遞參數:?

在終端輸入?

`sh 腳本的文件名.sh 參數1 參數2 參數3`

獲取第0個參數

param1=$0

獲取參數個數

args_count=$#

獲取所有參數 "參數1 參數2 參數3"表示

args=$*

獲取所有參數 "參數1" "參數2" "參數3"表示

args2=$@

顯示當前進程ID

pid=$$

后臺運行的最后一個ID號

last_pid=$!

顯示最后命令的退出狀態(tài)。0表示沒有錯誤,其他任何值表明有錯誤

exit_state=$?

if

注意必須以`fi`結尾


if

if condition

then

? ? command

fi

if - else

if condition

then

? ? command

else

? ? command

fi

if - elif - else

if condition1

then

? ? command1

elif condition2

then

? ? command2

else

? ? commandN

fi

?for


for var in item1 item2 ... itemN

do

? ? command

done

寫成一行

for var in item1 item2 ... itemN; do command;done;

while

while condition

do

? ? command

done

until

與`while`相反?


until condition

do

? ? command

done

case

必須以`esac`結尾每個分支有兩個分號,`*)`表示不匹配的分支

case $aNum in

? ? 1)? echo '你選擇了 1'

? ? ;;

? ? 2)? echo '你選擇了 2'

? ? ;;

? ? 3)? echo '你選擇了 3'

? ? ;;

? ? 4)? echo '你選擇了 4'

? ? ;;

? ? *)? echo '你沒有輸入 1 到 4 之間的數字'

? ? ;;

esac


shell支持break和continue

函數

funWithReturn(){

? ? read aNum

? ? read anotherNum

? ? return $(($aNum+$anotherNum))

}

函數獲取參數的方法與腳本獲取參數方法一致

引入其他腳本

使用`.`符號引入其他sh腳本

. ./test1.sh

或者使用source

source ./test1.sh

字符串

字符串插值

echo "${variable}"

字符串長度

length=${#variable}

子串

echo ${string:1:4}

字符串拼接

variable ="hello, "$your_name" !"

echo $greeting $variable

字符串可以使用單引號

單引號的字符串無法插值,并且無法用轉義字符

數組

定義數組

array_name=(value0 value1 value2 value3)

數組賦值

array_name[0]=value0

數組長度

length=${#array_name[0]}

獲取數組所有元素

echo "${my_array[*]}"

echo "${my_array[@]}"

關系運算符

算數運算符

- `+`,`-`,`*`,`/`,`%`,`=`,`==`,`!=`

關系運算符

`-eq` 相等?

`-ne` 不等?

`-gt` 大于?

`-lt` 小于?

`-ge` 大于等于?

`-le` 小于等于?

布爾運算符

?`!` 非

`-o` 或

?`-a` 與

邏輯運算符

`&&` 邏輯與

`||` 邏輯或

字符串運算符

?`=` 相等?

?`!=` 不等?

?`-z $str` 長度為0?

`-n $str` 長度不為0?

`$str` 為空?

文件測試運算符

`-d $file` 目錄?

`-f $file` 普通文件?

`-r $file` 可讀?

?`-w $file` 可寫?

`-x $file` 可執(zhí)行?

?`-s $file` 0字節(jié)?

`-e $file` 是否存在

Shell重定向

?`command > file` 將輸出重定向到file

`command < file` 將輸入重定向到file

?`command >> file` 將輸出追加到file

`n > file` 將文件描述符為 n 的文件重定向到 file

`n >> file` 將文件描述符為 n 的文件以追加的方式重定向到 file

`n >& file` 將輸出文件 m 和 n 合并

`n <& file` 將輸入文件 m 和 n 合并

`<< tag` 將開始標記 tag 和結束標記 tag 之間的內容作為輸入

更多命令參考?

Linux命令大全

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,541評論 1 19
  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關系?...
    Zero___閱讀 3,333評論 3 49
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,995評論 0 11
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,503評論 3 53
  • 一,shell題記 不懂shell的程序員不是好程序員,學習shell是為了自動化,使用自動化可以非常有效的提高工...
    架構師小秘圈閱讀 8,795評論 3 70

友情鏈接更多精彩內容