bash - 带有参数的可覆盖预定义 Bash 变量

标签 bash variables arguments overriding

当我想在 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

提前致谢:)

最佳答案

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

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

来自 man bash:

${parameter:-word}
Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.

关于bash - 带有参数的可覆盖预定义 Bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3641336/

相关文章:

c++ - 这个局部变量的声明实际上会重复很多次吗?

linux - Bash 将信息从脚本传递到脚本

bash - 列 : randomly keep one 中的重复项

bash - 我的变量赋值有什么问题?

python - 如何在 Python 中获取父目录的名称?

variables - 如何将变量序列(列表)传递给 SAS 宏

c - 如何将结构指针传递给具有常量值的函数

C++ 将双参数解析为字符串?

java - 在bash中读取Java变量值

python - 如何使用 shell 脚本/C/Python 在文件每一行的末尾添加迭代文本?