linux - 了解 bash 脚本语法

标签 linux bash fedora20

以下 bash 语法是什么意思:

function use_library {
    local name=$1
    local enabled=1
    [[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]] && enabled=0
    return $enabled
}

我不是特别理解 [[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]] 行。它是某种正则表达式或字符串比较吗?

最佳答案

这是比较变量并防止其中一些未定义/为空的奇怪行为的技巧。

您可以使用 或任何其他。主要是它想比较 ${LIBS_FROM_GIT}${name} 并防止其中一个为空的情况。

正如 Etan Reisner 在评论中指出的那样,[[ 没有空变量扩展问题。所以这个技巧通常在与单个 [:

进行比较时使用

这行不通:

$ [ $d == $f ] && echo "yes"
bash: [: a: unary operator expected

但如果我们在两个变量周围都添加一个字符串,它就会这样做:

$ [ ,$d, == ,$f, ] && echo "yes"
$ 

最后,注意你可以直接使用这个:

[[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]] && return 0 || return 1

关于linux - 了解 bash 脚本语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489501/

相关文章:

linux - Linux 命令 shell 中 "command > log.txt"和 "command 1>& log.txt"之间的区别?

Bash : If command timeout, 执行其他操作

sublimetext2 - 是否可以在 Sublime Text 2 中轻松合并这样的两个文件?

fedora - 如何更改在 Fedora 20 中切换工作区的快捷方式?

macos - 在没有 root 权限的情况下定期在 Mac OS X 上运行 shell 脚本

linux - Fedora 20 - 如何安装应用程序?

python - 解析python中的可变行

linux - Ansible:检查服务是否正在监听特定端口

c++ - 使用 boost::filesystem 将文件路径从 Windows 转换为 Linux,然后再转换回来

linux - 如何使用本地参数运行远程 bash 脚本