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