У меня здесь есть ситуация, я пытаюсь запустить команду sed на удаленной оболочке внутри моего сценария оболочки и использую переменные, которые являются динамическими и в итоге снова и снова получают одну и ту же ошибку.
Это команда sed, которая отлично работает на локальной оболочке без каких-либо ошибок. Я использовал это регулярное выражение после тщательного тестирования и, поверьте, проблем с ним нет.
sed -i 's/ #0\t30718/ 0\t30718/' ./config.txt
Попытка запустить это в удаленной оболочке, используя ssh:
ssh root@sys_name sed -i 's/ #0\t30718/ 0\t30718/' /absolute-path/vconfig.txt
И когда я пытаюсь запустить эту команду, используя переменные. (30718 и путь к файлу являются переменными):
ssh root@sys_name 'sed -i "s/0\t${pe_list[0]}/#0\t${pe_list[0]}/g" $file_path'
или как это:
ssh root@sys_name "sed -i 's/0\t${pe_list[0]}/#0\t${pe_list[0]}/g' $file_path"
Я либо получаю выражение sed: -e # 1, char 2: неопределенная команда `s ' ошибка, либо команда sed выполняется с нежелательным выводом, совпадающим с именами переменных, как есть. Короче говоря, я хочу выполнить команду sed на удаленной оболочке, используя ssh, и ограничение состоит в том, что вся команда является частью сценария, а значения, которые должны быть сопоставлены, и имя файла являются переменными в этом файле.