假设我有一个bash脚本scr.sh
。在这个脚本里面我有一个变量$x
。我需要设置以下行为。如果使用参数调用scr.sh
,如:
./scr.sh 45
然后我希望在我的bash脚本中将x
分配给此值。否则,如果没有命令行参数,如:
./scr.sh
x
应该分配一些默认值,在我的例子中是一个环境变量,比如x=$ENVIRONMENT_VAR
。
我该怎么做?
答案 0 :(得分:4)
您可以使用它来设置默认值:
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.
答案 1 :(得分:0)
虽然@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}"