一、獲取命令行參數
Shell腳本中,可以使用$0、$1、$2、$3……$n來獲取命令行參數。其中,$0代表腳本本身,$1代表第一個參數,$2代表第二個參數,$3代表第三個參數,以此類推。
#!/bin/bash
echo "腳本名:$0"
echo "第一個參數:$1"
echo "第二個參數:$2"
echo "第三個參數:$3"
當我們執行該腳本並傳入參數時,輸出結果如下:
$ ./test.sh hello world shell
腳本名:./test.sh
第一個參數:hello
第二個參數:world
第三個參數:shell
二、判斷參數個數
在腳本中,我們需要對命令行參數進行校驗,確保輸入參數個數正確。可以使用”$#”獲取參數個數。
#!/bin/bash
if [ $# -ne 2 ]; then
echo "請輸入兩個參數"
exit 1
else
echo "參數個數正確"
fi
執行腳本,當傳入的參數個數不為2時,則輸出”請輸入兩個參數”並退出;否則輸出”參數個數正確”。
$ ./test.sh
請輸入兩個參數
$ ./test.sh hello world
參數個數正確
三、判斷參數是否為空
在實際的運維場景中,我們往往需要對輸入的參數進行非空校驗。可以使用”-z”判斷參數是否為空。
#!/bin/bash
if [ -z "$1" ]; then
echo "參數不能為空"
exit 1
else
echo "參數不為空"
fi
執行腳本,當傳入的參數為空時,則輸出”參數不能為空”並退出;否則輸出”參數不為空”。
$ ./test.sh
參數不能為空
$ ./test.sh hello
參數不為空
四、使用長選項
在腳本中,我們往往需要使用一些長選項來使得腳本更加易用。可以使用”getopt”命令來實現。
#!/bin/bash
while true; do
case "$1" in
-a | --all)
echo "顯示所有信息"
shift;;
-v | --version)
echo "顯示版本號"
shift;;
-h | --help)
echo "顯示幫助信息"
shift;;
--)
shift
break;;
*)
echo "未知選項:$1"
exit 1;;
esac
done
執行腳本,可以傳遞”-a”、”–all”來顯示所有信息;”-v”、”–version”來顯示版本號;”-h”、”–help”來顯示幫助信息。如果傳遞了未知選項,則輸出”未知選項:XXX”。
$ ./test.sh -a
顯示所有信息
$ ./test.sh -v
顯示版本號
$ ./test.sh --help
顯示幫助信息
$ ./test.sh -x
未知選項:-x
五、處理命令行參數中的路徑
在腳本中,我們往往需要處理命令行參數中的路徑。可以使用”readlink”命令來獲取路徑的絕對路徑。
#!/bin/bash
filepath=$(readlink -f $1)
echo "文件路徑:$filepath"
執行腳本,輸出文件路徑的絕對路徑。
$ ./test.sh test.txt
文件路徑:/home/user/test.txt
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/182119.html