Telnetにncを使用するBashスクリプトは、「:コマンドが見つかりません。OK」を報告します。

Telnetにncを使用するBashスクリプトは、「:コマンドが見つかりません。OK」を報告します。

bashプロンプトに移動して次のコマンドを実行すると(memcachedをフラッシュするため):

echo "flush_all" | /usr/bin/nc 172.16.198.130 11211

動作し、「OK」を返します。

同じコマンドを1行のbashスクリプトに入れると、次のようになります。

#!/bin/sh
`echo "flush_all" | /usr/bin/nc 172.16.198.130 11211`

次の結果が表示されます。

: command not found OK

2番目のコマンドで「OK」を処理しようとしていますか? /dev/nullにリダイレクトする以外にこれを防ぐにはどうすればよいですか?

答え1

この: #!/bin/sh `echo bob` `echo jim`

端末でこれを行ったのと同じです。

# bob
bob: command not found
# jim
jim: command not found

バックティックを取り除きます。

答え2

コマンドの周りにバックティックを使用すると、次の出力を実行しようとします。
echo "flush_all" | /usr/bin/nc 172.16.198.130 11211
あなたの場合は、「ok」
コメントですでに述べたようにバックティックを削除するだけです。

関連情報