值=${VAR| |o}
我在 shell 脚本中发现了这个变量赋值。我不明白为什么||这里使用了符号。
编辑
给出的代码一条评论:
#!/bin/bash
source /opt/cpf/bin/cpf_logging_helper.sh
STATE=$1
DNS_MASTER=${TEST.DNS.DNS_MASTER:-o}
service status dns > /dev/null
rval=$?
if [ $rval -eq 0 ]
then
if [ $DNS_MASTER == `hostname -s` ]
then
echo "1"
else
echo "2"
fi
fi
答案1
看来原始编码器打算使用$VAR
or的值(o
如果它未设置)。可以通过bash
使用以下方法来实现:
VALUE=${VAR:-o}
另请参阅man bash
并搜索Parameter Expansion
或:-
答案2
该结构:VALUE=${VAR| |o}
在 dash、bash、ksh 和 zsh 中无效。
如果这| |
实际上是一个/ /
then 它可能(?)在 bash 中有意义。
这意味着:用 替换第一次出现的空格
o
。
这是否是一个合理的替代是另一回事。我不相信是这样。
在编辑中添加的代码中,点在变量名称中无效,无论是在 dash、bash 或 zsh 中,还是在 ksh 中的非常特定条件下。
这在 bash 中会失败:
DNS_MASTER=${TEST.DNS.DNS_MASTER:-o}
此外,由于空格以及未执行主机名命令,此测试不正确:
if [ $DNS_MASTER == hostname -s ]
使用:
if [ "$DNS_MASTER" == "$(hostname -s)" ]
总之,您提供的代码在 bash 中无法正常工作,并且在大多数 shell 中都令人费解。请编辑您的问题以使其相关。