我正在尝试与一个不受我管理的系统进行交互,该系统正在执行一些 Unix 命令脚本和命令以轻松执行作业。
有一个变量替换不起作用,我想知道是否可以编写一个命令来避免这种情况。有很多变量需要设置,我希望有机会输入一个空变量。问题在于系统没有传递空变量并且根本没有设置该变量。我明白了
${option.VARIABLE}:错误替换
我尝试设置类似的东西但不起作用。
if [ -z ${option.VARIABLE} ];然后 option.VARIABLE="";菲;
任何想法?
答案1
点不是变量名称中的有效字符。 bash 手册说(这里)
姓名
仅由字母、数字和下划线组成且以字母或下划线开头的单词。名称用作 shell 变量和函数名称。也称为标识符。
但是,我的 ksh93 手册页显示:
定义。
[...] 标识符是一个以字母或下划线开头的字母、数字或下划线序列。标识符用作变量名称的组成部分。 vname 是由 . 分隔的一个或多个标识符组成的序列。并可选地在前面加上 .. Vnames 用作函数和变量名称。
这部分似乎与您的问题最相关(强调我的问题):
参数扩展。
[...] 变量由 vname 表示。 创建一个 vname 包含 . 的变量,该变量的 vname 由最后一个 . 之前的所有内容组成。必须已经存在。
此功能仅存在于 ksh93 中,bash 中不存在。如果您的脚本使用它,您需要在 ksh93 下运行它。
答案2
我觉得 ”。”你的变量名会弄乱你的代码。
option.VARIABLE
尝试通过将变量从重命名为来删除变量中的点optionVARIABLE
。