このルートをテーブルに追加するスクリプトを実行しようとしています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
変数にコンテンツをどのように割り当てますか?