我想在我的bash脚本中运行一个带或不带-v标志的命令,具体取决于是否定义了环境变量$ VERBOSE.像这样的东西:
#!/bin/bash
/usr/local/bin/mongo-connector \
-m $MONGO_HOST \
-t $NEO_URI \
[if $VERBOSE then -v ] \
-stdout
Run Code Online (Sandbox Code Playgroud)
Wil*_*ell 12
#!/bin/bash
/usr/local/bin/mongo-connector \
-m $MONGO_HOST \
-t $NEO_URI \
${VERBOSE:+-v} \
-stdout
Run Code Online (Sandbox Code Playgroud)
如果设置了VERBOSE且非空,则${VERBOSE:+-v}求值为-v.如果VERBOSE未设置或为空,则计算为空字符串.请注意,这是一个必须避免使用双引号的实例.如果你写:cmd "${VERBOSE:+-v}"而不是cmd ${VERBOSE+:v},当VERBOSE为空或未设置时,行为在语义上是不同的.在前一种情况下,cmd使用一个参数(空字符串)cmd调用,而在后一种情况下使用零参数调用.
che*_*ner 10
为了便于阅读,请考虑使用数组来存储参数.
args=(
-m "$MONGO_HOST"
-t "$NEO_URI"
-stdout
)
if [[ -v VERBOSE ]]; then
args+=(-v)
fi
/usr/local/bin/mongo-connector "${args[@]}"
Run Code Online (Sandbox Code Playgroud)