[英]How to know if an argument was passed to my bash script?
假設我有一個bash腳本scr.sh
在此腳本中,我有一個變量$x
。 我需要設置以下行為。 如果使用參數調用scr.sh
,如下所示:
./scr.sh 45
那么我想在我的bash腳本中將x
分配給該值。 否則,如果沒有命令行參數,則如下所示:
./scr.sh
應該將x
分配給某個默認值,在我的情況下,它是一個環境變量,例如x=$ENVIRONMENT_VAR
。
我怎樣才能做到這一點?
您可以使用它來設置默認值:
x="${1:-$ENVIRONMENT_VAR}"
${parameter:-word} Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.
@Cyrus已很好地回答了這個問題,但我想對${parameter:-word}
方法進行一些改動,即:
: ${x:=${1-$ENVIRONMENT_VAR}}
這使您可以更進一步,並在調用腳本時提交覆蓋功能。 在下面,您可以看到使用此方法可以擁有的三個不變式:
$ ./src.sh
x=42
$ ./src.sh 8
x=8
$ x=2 ./src.sh 8
x=2
用於以上輸出的腳本:
$ cat ./src.sh
#!/usr/bin/env bash
ENVIRONMENT_VAR=42
: ${x:=${1-$ENVIRONMENT_VAR}}
echo "x=${x}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.