bash中的三元运算或默认值



我想在bash(?:(中执行三元运算,如果变量为null,则提供默认值。

#!/bin/bash
while getopts l:m:ch:eh:cate:op:b flag
do
case "${flag}" in
l) localities=${OPTARG};;
m) mode=${OPTARG};;
ch) cbhost=${OPTARG};;
eh) eshost=${OPTARG};;
cate) category=${OPTARG};;
op) outputDir=${OPTARG};;
b) s3bucket=${OPTARG};;
esac
done

在所有变量中,cbhost和eshost是可选变量。如何在bash中,我可以检查是否为null,然后使用三元运算分配默认值??或者如何为每个变量分配默认值,如果传递参数,则可以覆盖这些值。

提前谢谢。

根据man getopt

Optstring已识别的选项字母字符串(请参阅getopt(3((;如果一个字母后面跟着一个冒号,则该选项应该有一个参数,该参数可以用空格分隔,也可以不用空格分隔。

所以有几个问题:

  1. 不能使用多字母字符串作为选项。必须只有一个字母
  2. 您似乎期望-b选项有一个选项值,但这并没有使用尾随的:
  3. 您可以在单个for循环中设置每个变量的默认值,如下所示

这里是建议的代码:

#!/bin/bash
# set default value for these variables
declare localities='loc123' mode='m123' category='cat123' 
outputDir='op123' s3bucket='s3123' cbhost='https://cbhost:1091/'
while getopts l:m:c:e:y:d:b: flag
do
case "${flag}" in
l) localities=${OPTARG};;
m) mode=${OPTARG};;
c) cbhost=${OPTARG};;
e) eshost=${OPTARG};;
y) category=${OPTARG};;
d) outputDir=${OPTARG};;
b) s3bucket=${OPTARG};;
esac
done
# check values of your variables
declare -p localities mode category outputDir s3bucket cbhost eshost

相关内容

  • 没有找到相关文章

最新更新