Я пытаюсь запустить сценарий, который должен добавить этот маршрут в таблицу 11:
ip route add local 10.1.3.212 dev eth1 proto kernel scope host src 10.1.3.212 table 11
Если я запускаю эту команду вручную, она выполняется успешно, и я вижу запись в таблице 11, но если я запускаю сценарий, который выполняет следующие действия:
if [[ ${IP_ROUTE} == local* ]]; then
ip route add ${IP_ROUTE} table ${NEW_INTERFACE_TABLE} 2>>/home/ec2-user/script_output
fi
где $ {NEW_INTERFACE_TABLE} равно 11, скрипт выдает эту ошибку:
Error: an inet prefix is expected rather than "local 10.1.3.212 dev eth1 proto kernel scope host src 10.1.3.212 ".
Пожалуйста, помогите, я схожу с ума.
Проблема при расширении ${IP_ROUTE}
, текст интерпретируется как один параметр, а не как набор параметров. Это должно произойти, если переменная заключена в кавычки, а это не так, поэтому этого не следует делать.
Что нужно проверить:
IFS
(вы можете запустить внутри скрипта set | grep -E '^IFS'
). У вас должно получиться что-то вроде IFS=$' \t\n'
что является обычным значением по умолчанию. Обратите внимание, что пробел указан как разделитель полей (IFS
переменная содержит именно это).#!/bin/bash
вместо просто #!/bin/sh
если вы его используете.IP_ROUTE
переменная?