gpt4 book ai didi

Bash:如何从参数设置变量,并使用默认值

转载 作者:行者123 更新时间:2023-11-29 08:42:40 25 4
gpt4 key购买 nike

很明显,由于所有不同的变量扩展方法和程序,例如 test[[[

现在我正在寻找

DIR=$1 or .

意思是,我的 DIR 变量应该包含第一个 arg 中指定的内容或当前目录。

这和 DIR=${1-.} 有什么区别?

我发现连字符语法令人困惑,并寻求更具可读性的语法。

为什么我不能这样做?

DIR="$1" || '.'

我猜这意味着“如果 $1 为空,赋值仍然有效(DIR 变为空),因此无效命令 '.'永远不会被执行。”

最佳答案

我在这里看到几个问题。

  1. “我能写出真正反射(reflect)这种逻辑的东西吗”

    是的。有几种方法可以做到这一点。这是一个:

    if [[ "$1" != "" ]]; then
    DIR="$1"
    else
    DIR=.
    fi
  2. “这和 DIR=${1-.} 有什么区别?”

    语法 ${1-.} 扩展为 . 如果 $1 未设置,但扩展为 $1 如果设置了 $1——即使 $1 设置为空字符串。

    语法 ${1:-.} 扩展为 . 如果 $1 未设置或设置为空字符串。仅当 $1 设置为空字符串以外的内容时,它才会像 $1 一样展开。

  3. “为什么我不能这样做? DIR="$1"|| '.'

    因为这是 bash,而不是 perl 或 ruby​​ 或其他语言。 (请原谅我的卑鄙。)

    在 bash 中,|| 分隔整个命令(技术上它分隔管道)。它不分隔表达式。

    所以 DIR="$1"|| '.' 表示“执行 DIR="$1",如果以非零退出代码退出,则执行 '.'”。

关于Bash:如何从参数设置变量,并使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com