bash脚本连字符运算符和方括号

bash脚本连字符运算符和方括号,bash,shell,unix,operators,getopts,Bash,Shell,Unix,Operators,Getopts,请有人告诉我下面脚本中的连字符运算符是什么 [ "${MYDATA_OPT-}" ] && set "$MYDATA_OPT" "$@" data=${MYDATA_VER-1} 是否有这些操作员的快速文档 我也在努力理解下面的脚本 shift $(($OPTIND -1)) 及 非常感谢。参数扩展下的bash手册页中引用的表单 3.5.3壳体参数扩展 ${参数:-word} 如果参数为unset或null,则替换word的展开形式。 否则,将替换参数的值 生产 ${MY_

请有人告诉我下面脚本中的连字符运算符是什么

[ "${MYDATA_OPT-}" ] && set "$MYDATA_OPT" "$@"

data=${MYDATA_VER-1}
是否有这些操作员的快速文档

我也在努力理解下面的脚本

shift $(($OPTIND -1))


非常感谢。

参数扩展下的
bash
手册页中引用的表单

3.5.3壳体参数扩展

${参数:-word}

如果参数为unset或null,则替换word的展开形式。 否则,将替换参数的值

生产

${MY_DATA_VER:-1}
如果
MY\u DATA\u VER
未设置或设置为空字符串,则将扩展到
1
。但是,您的示例省略了冒号:

${MY_DATA_VER-1}
这也记录在手册页中,尽管在记录特定操作员之前(从4.1手册页)有一句话是间接的:

省略冒号只会导致对未设置的参数进行测试

因此,在您的示例中,如果从未设置
MY_DATA\u VER
,或者如果设置了
MY_DATA\u VER
的任何值(可能是空字符串),则扩展将生成
1



shift
示例仅删除第一个
$OPTIND-1
shell参数。有关
OPTIND
的重要性和
getopts
工作原理的说明,请参阅
bash
手册页或在
bash
提示符下尝试
help getopts

参数扩展下手册页中引用的表单

3.5.3壳体参数扩展

${参数:-word}

如果参数为unset或null,则替换word的展开形式。 否则,将替换参数的值

生产

${MY_DATA_VER:-1}
如果
MY\u DATA\u VER
未设置或设置为空字符串,则将扩展到
1
。但是,您的示例省略了冒号:

${MY_DATA_VER-1}
这也记录在手册页中,尽管在记录特定操作员之前(从4.1手册页)有一句话是间接的:

省略冒号只会导致对未设置的参数进行测试

因此,在您的示例中,如果从未设置
MY_DATA\u VER
,或者如果设置了
MY_DATA\u VER
的任何值(可能是空字符串),则扩展将生成
1



shift
示例仅删除第一个
$OPTIND-1
shell参数。有关
OPTIND
的重要性和
getopts
工作原理的说明,请参阅
bash
手册页或在
bash
提示符下尝试
help getopts

参数扩展下手册页中引用的表单

3.5.3壳体参数扩展

${参数:-word}

如果参数为unset或null,则替换word的展开形式。 否则,将替换参数的值

生产

${MY_DATA_VER:-1}
如果
MY\u DATA\u VER
未设置或设置为空字符串,则将扩展到
1
。但是,您的示例省略了冒号:

${MY_DATA_VER-1}
这也记录在手册页中,尽管在记录特定操作员之前(从4.1手册页)有一句话是间接的:

省略冒号只会导致对未设置的参数进行测试

因此,在您的示例中,如果从未设置
MY_DATA\u VER
,或者如果设置了
MY_DATA\u VER
的任何值(可能是空字符串),则扩展将生成
1



shift
示例仅删除第一个
$OPTIND-1
shell参数。有关
OPTIND
的重要性和
getopts
工作原理的说明,请参阅
bash
手册页或在
bash
提示符下尝试
help getopts

参数扩展下手册页中引用的表单

3.5.3壳体参数扩展

${参数:-word}

如果参数为unset或null,则替换word的展开形式。 否则,将替换参数的值

生产

${MY_DATA_VER:-1}
如果
MY\u DATA\u VER
未设置或设置为空字符串,则将扩展到
1
。但是,您的示例省略了冒号:

${MY_DATA_VER-1}
这也记录在手册页中,尽管在记录特定操作员之前(从4.1手册页)有一句话是间接的:

省略冒号只会导致对未设置的参数进行测试

因此,在您的示例中,如果从未设置
MY_DATA\u VER
,或者如果设置了
MY_DATA\u VER
的任何值(可能是空字符串),则扩展将生成
1



shift
示例仅删除第一个
$OPTIND-1
shell参数。有关
OPTIND
的重要性和
getopts
工作原理的说明,请参阅
bash
手册页或在
bash
提示符下尝试
help getopts

提示-一旦你弄明白了,在代码中添加一条注释来解释它!始终考虑在您之后维护代码的人。如果原作者那样做的话,会节省你的时间,对吗。。我正在尝试退出这段遗留代码,并尝试编写新代码。我将确保添加注释以帮助其他人:)这是POSIX shell的一个相当常规的功能,尽管并不广为人知。实际上,在注释中记录它与在
i++
这样的行中添加“#添加到变量”没有什么不同。我完全支持注释复杂的逻辑补丁,但不支持语言语法。提示-一旦你弄明白了,在代码中添加注释来解释它!始终考虑将维护代码的人员