簡體   English   中英

如何知道參數是否傳遞給我的bash腳本?

[英]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.

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