簡體   English   中英

檢查是否設置了傳遞給bash腳本的第一個參數?

[英]Checking if the first argument passed to a bash script is set?

我正在嘗試查看傳遞給我腳本的第一個參數是否已設置。 我使用此處的說明創建測試: 如何檢查變量是否在Bash中設置?

這是我的腳本:

var=$1
if [ -z ${var+x} ]; then echo "var is unset"; else echo "var is set to '$var'"; fi

假設我沒有任何參數運行它:

ole@MKI:./test.sh
var is set to ''

假設我用一個參數運行它:

ole@MKI:./test.sh foo
var is set to 'foo'

在這兩種情況下都沒有報告var未設置。

思考?

TIA,Ole

問題出在這一行:

var=$1

這設置了var ,無論是否設置了$1 ,它都會這樣做。 解決方案是測試$1

if [ -z ${1+x} ]; then echo "var is unset"; else echo "var is set to '$1'"; fi

這種方法有效:

$ test.sh
var is unset
$ test.sh a
var is set to 'a'

即使運行腳本時未提供參數,也會設置var變量。 它被賦予空字符串。

shell還將$# special參數設置為參數個數。

嘗試一下:

if [[ $# = 0 ]] ; then printf "no parameter\n"; exit 1; else printf "At least one parameter\n"; var="${1}"; fi

如果您繼續使用其他附加參數(例如選項),那么您可以考慮使用來自The Open Group Base Specifications Issue 7getopts - parse實用程序選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM