0
#!/bin/sh
/sbin/ifconfig tun0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}' > ./tun0_ip.txt

コマンドラインに入れると、これは非常にうまく機能します。ただし、sh スクリプトでは機能しません。

私は何を間違っていますか?一部のコマンドが sh スクリプトで機能しないのはなぜですか?

~$ bash -x ./reset.sh
+ echo /sbin/ifconfig tun0
+ grep 'inet addr:'
+ cut -d: -f2
+ awk '{print $1}'
4

1 に答える 1

0

シバンラインとして与えながら、bashでテストしているのは奇妙です#!/bin/sh

ただし、これが機能しない理由ではない可能性があります。確かに、コマンドラインからコマンドを実行しても、まったく同じ環境のスクリプトからコマンドを実行しても、異なる結果が得られるはずはありません。

スクリプトを呼び出すユーザーのロケールが異なる可能性があるため、ifconfig の出力は「inet addr」ではなく別のものになるのでしょうか? または、ifconfigs 出力の形式を変更する環境変数がエクスポートされていませんか?

一歩一歩進むことによってのみ、見つけることができます。スクリプトを見ると、ifconfig が期待どおりの情報を提供しないという問題があるはずです。したがって、変更されていないスクリプトからの出力を見てください。

于 2015-01-28T20:07:08.593 に答える