揭秘 Bash 腳本中如何檢查參數的數量
檢查腳本中傳遞的參數總數是非常重要的,它可以用于各種目的,如錯誤處理、根據參數數量提供消息以及幫助用戶傳遞正確數量的參數。在Bash中,可以通過兩種方法來計算參數的總數。一種是使用”$#”,另一種是使用循環。本教程將展示檢查參數數量的方法,并展示如何將該值用于不同的目的。
本教程的這一部分將使用多個示例展示檢查參數數量的用途。
示例1:使用”$#”計算參數的總數
創建一個包含以下腳本的Bash文件,它將計算參數的總數,并使用”for”循環打印參數值。
#!/bin/bash
# Linux迷 www.linuxmi.com
#存儲參數的數量
len=$#
echo "參數總數: $len"
echo "參數值為:"
#打印參數值
for val in $@
do
echo $val
done
在使用參數值66、93139和123執行腳本后,將出現以下輸出:
示例2:根據參數長度打印參數值
創建一個包含以下腳本的Bash文件,它會計算傳遞給腳本的參數總數,并根據參數數量打印參數值。如果沒有傳遞任何參數給腳本,將會打印錯誤消息。
#!/bin/bash
# Linux迷 www.linuxmi.com
#存儲參數的數量
len=$#
#檢查參數的總數
if [ $len -eq 0 ]; then
echo "未提供任何參數"
fi
#初始化計數器
counter=0
#根據計數器的值打印參數值
while (( $counter < $len ))
do
if [ $counter -lt 1 ]; then
echo $1
elif [ $counter -lt 2 ]; then
echo $2
elif [ $counter -lt 3 ]; then
echo $3
fi
((counter++))
done
輸出中腳本執行了四次。當沒有給出參數時,打印了錯誤消息。當給出一個、兩個和三個參數值時,打印了參數值。
示例3:計算參數值的平均數
創建一個Bash文件,包含以下腳本,用于計算參數值的平均數。腳本將計算傳遞給它的五個參數值的平均值。腳本中使用”bc”命令來計算平均值。如果沒有傳遞參數給腳本,則會打印錯誤消息。
#!/bin/bash
# Linux迷 www.linuxmi.com
#檢查參數的總數
if [ $# -eq 5 ]; then
#計算參數值的總和
sum=$(($1+$2+$3+$4+$5))
#計算平均值
avg=$(($sum/5 | bc -l))
#打印平均值和參數值
echo "參數值為:$1 $2 $3 $4 $5"
echo "平均值:$avg"
else
#打印錯誤消息
echo "參數的總數必須為5。"
fi
腳本在輸出中執行了兩次。當沒有給定參數時,會打印錯誤消息。當給定了五個參數值時,會打印參數值的平均值。
示例4:基于參數值打印錯誤消息
創建一個Bash文件,其中包含以下腳本,根據”if”條件打印三條消息之一。第一個”if”條件檢查參數的數量是否為2。第二個”if”條件檢查參數值的長度是否小于5。第三個”if”條件檢查第二個參數是否為正數。
#讀取參數值
name=$1
price=$2
#計算第二個參數的長度
len=${#name}
#檢查參數總數
if [ $# -ne 2 ]; then
echo "參數總數必須為2個。"
exit
#檢查第一個參數的長度
elif [ $len -lt 5 ]; then
echo "產品名稱必須至少包含5個字符。"
exit
#檢查第二個參數的值
elif [ $2 -lt 0 ]; then
echo "價格值必須為正數。"
exit
fi
#打印參數值
echo "產品$name的價格為TK. $price"
腳本在輸出中執行了四次。當沒有參數傳遞時,會打印錯誤消息”參數的總數必須為2″。當第一個參數的長度小于5時,會打印錯誤消息”產品名稱必須至少為5個字符長”。當第二個參數為負數時,會打印錯誤消息”價格值必須為正數”。