Shell 使用sh脚本时出错
由于Shell 使用sh脚本时出错,shell,sh,Shell,Sh,由于bashshell不可用的限制,我正在使用shshell。下面这段代码在bashshell上运行正常,但在shshell上运行时抛出错误 if [[ -n $(grep -i "${RSA_BACKUP[iter]}: OK" $BACKUP_HASH_TRACK) ]] 错误:/etc/backup\u infra.sh:第79行:语法错误:错误替换 您尝试运行的脚本需要Bash(至少版本4.0)。这是因为它使用 关联数组(${RSA_BACKUP[iter]}) […]而不是[…]
bash
shell不可用的限制,我正在使用sh
shell。下面这段代码在bash
shell上运行正常,但在sh
shell上运行时抛出错误
if [[ -n $(grep -i "${RSA_BACKUP[iter]}: OK" $BACKUP_HASH_TRACK) ]]
错误:/etc/backup\u infra.sh:第79行:语法错误:错误替换
您尝试运行的脚本需要Bash(至少版本4.0)。这是因为它使用
${RSA_BACKUP[iter]}
)[…]
而不是[…]
[[…]]
语法,有些shell,如bash
,即使作为sh
调用,也能够理解它。然而,破折号
和ash
炮弹却没有
但主要问题是关联数组。你现在面临的问题是
bash
您使用的变量值是什么?如果没有这些正确的值,您的输入将无法验证,因此无法提供正确的解决方案。您的代码中有两个元素是bashism,在POSIX外壳中无法工作(假设您的
sh
是POSIX,您尚未确认)。第一个是[[
。与其使用此方法,不如重写脚本以使用传统测试。man test
了解平台上可用的详细信息。第二个是使用数组。Bash支持数组。POSIX shell不支持数组。如果需要帮助编写解决此问题的方法,您需要在问题中提供更详细的上下文。@ghoti:n同意你的意见。正如你所看到的,OP的帖子至少是无法验证的,我们不知道他的要求是什么,他对变量的值是什么(我甚至发表了一条评论,要求提供信息),但我能提供的关于这些信息的最起码的建议/帮助是建议使用[我这样做了]@Indra:如果你让我们知道变量的值是什么(或者)你对特定的If
构造的意图是什么,我们可以帮助你处理与你的代码等价的sh
。好的,我有一个字符串数组,它是RSA\u BACKUP[],现在我需要找到下面的“RSA\u BACKUP[idx]:好的在文件中遍历文件列表时