夠用的 shell 指令碼

2022-01-26 01:13:34 字數 1579 閱讀 3953

shell 指令碼隨處可見,甚至有些專案就是由 shell 指令碼組成的

如果你想使用 shell 指令碼自動化執行流程,或者看懂 shell 指令碼,需要哪些知識呢

這裡簡單講幾個點

小工具包裝指令碼編譯**

呼叫其他高階語言(排程)

少量的資料處理

$ example_command  1 2 3
在執行命令後面加了三個引數

在程式中可以這樣獲取

# 命令本身,即: example_command 

echo $0

# 1echo $1

# 2echo $2

# 3echo $3

如果是乙個 shell 函式要獲取引數呢?

也是類似!

function_call () 

function_call "call function"

借助 source 命令

# a.sh

function function_a()

# b.sh

source a.sh

function_a

while true; do

read -r -p "step $prestep done! next step is $nextstep. are you sure continue? [y/n] " input

case $input in

[yy][ee][ss] | [yy])

echo "continue"

break

;;[nn][oo] | [nn])

echo "opt exit, done."

exit 1

;;*)

echo "invalid input..."

;;esac

done

如果不想輸入錯誤一直提示,可以去掉 while 迴圈

set -x 命令輸出示例:

有幾種方式可以在 shell 中計算

但是這裡只說一種

那就是雙括號的形式

# a.sh

# 雙括號中不能使用 $n 表示變數

((n = 10 / 3))

echo $n

shell 的 test 提供了很多比較實用的比較方式

比如:

-e: 檔案存在

-f: 檔案存在並且是普通檔案

停,如果全列出來就沒意思了,只能是授之以魚

通過命令 man test 可以看到更詳細的判斷語法

shell指令碼 訪問shell指令碼的引數

所謂的位置引數 positional parameters 指的也就是shell指令碼的命令列引數 command line arguments 在shell函式裡,它們同時也可以是函式的引數。各引數都由整數來命名。由於歷史原因,當它超過9時,就應該用大括號把數字框起來 echo first arg...

Shell指令碼(三) Shell指令碼入門

1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...

Shell指令碼和shell

1.shell script,shell指令碼與windows dos下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比windows下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,畢竟它使用了linux un...