Я использую оболочку sh
из-за ограничения недоступности оболочки bash
. Ниже фрагмент кода работает нормально на оболочке bash
, но при запуске на sh
возникает ошибка.Ошибка при использовании сценария sh
if [[ -n $(grep -i "${RSA_BACKUP[iter]}: OK" $BACKUP_HASH_TRACK) ]]
error: /etc/backup_infra.sh: line 79: syntax error: bad substitution
Каковы значения переменных, которые вы используете? Без этих правильных значений ваш вход не поддается проверке и поэтому не может быть обеспечен надлежащим решением. – Inian
Есть два элемента вашего кода, которые являются базовыми и не будут работать в оболочке POSIX (предполагается, что ваш 'sh' - это POSIX, который вы не подтвердили). Первый - '[['. Вместо этого перепишите сценарий для использования традиционных тестов. 'man test' для получения подробной информации о том, что доступно на вашей платформе. Второй - использование массива. Bash поддерживает массивы. В оболочке POSIX нет. Вам нужно будет предоставить больший контекст в вашем вопросе, если вы хотите, чтобы вы помогали в кодировании своего пути. – ghoti
@ghoti: Полностью в согласии с вами. Поскольку вы видели, что сообщение OP не было поддающимся проверке, мы понятия не имели, каково его требование и каковы его значения для переменных (я даже разместил комментарий, запрашивающий информацию), но наименьшее предложение/помощь с этой информацией I может дать рекомендацию использовать [, который я сделал так – Inian