【问题标题】:Overrible predefined Bash variables with argumentsOverrible 带有参数的预定义 Bash 变量
【发布时间】:2011-04-08 04:00:21
【问题描述】:

当我想用 Bash 中的参数覆盖变量中的默认值时,有人能指出我的问题吗?以下代码不起作用:

#!/bin/bash

VARIABLE1="defaultvalue1"
VARIABLE2="defaultvalue2"

# Check for first argument, if found, overrides VARIABLE1
if [ -n $1 ]; then
    VARIABLE1=$1
fi
# Check for second argument, if found, overrides VARIABLE2
if [ -n $2 ]; then
    VARIABLE2=$2
fi

echo "Var1: $VARIABLE1 ; Var2: $VARIABLE2"

我希望能够做到:

#./script.sh
Var1: defaultvalue1 ; Var2: defaultvalue2
#./script.sh override1
Var1: override1 ; Var2: defaultvalue2
#./script.sh override1 override2
Var1: override1 ; Var2: override2

提前致谢:)

【问题讨论】:

  • 未来注意事项:“不起作用”不是很有帮助。如果您能具体说明与您预期不同的错误消息和行为,那就更好了。

标签: bash variables arguments overriding


【解决方案1】:

您缺少第一个 iffi。但实际上你很幸运:有一种更简单的方法来做你正在做的事情。

VARIABLE1=${1:-defaultvalue1}
VARIABLE2=${2:-defaultvalue2}

来自man bash

${parameter:-word}
使用默认值。如果 parameter 未设置或为 null,则替换 word 的扩展。 否则,参数的值被替换。

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2020-03-16
    • 2020-07-17
    • 1970-01-01
    • 2021-04-14
    相关资源
    最近更新 更多