web-dev-qa-db-ja.com

ip route addは手動で動作しますが、bashスクリプトで実行すると「エラー:...ではなく、inetプレフィックスが予期されています」をスローします

このルートをテーブルに追加するスクリプトを実行しようとしています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 ".

助けてください、私は気が狂っています。

2
user1071840

問題は、${IP_ROUTE}を展開すると、テキストが一連のパラメーターではなく単一のパラメーターとして解釈されることです。これは、変数が引用符で囲まれている場合に発生するはずですが、そうではないので、そうするべきではありません。

チェックするいくつかの事柄:

  • IFSの内容(set | grep -E '^IFS'スクリプト内で実行できます)。通常のデフォルト値であるIFS=$' \t\n'のようなものが得られるはずです。スペース文字がフィールド区切り文字としてリストされていることに注意してください(IFS変数にはそれだけが含まれています)。
  • 実際にbashを使用していますか?使用している場合、シバンが#!/bin/bashではなく#!/bin/shであることを確認してください。
  • IP_ROUTE変数にコンテンツをどのように割り当てますか?
2
Migtor