0

whichkshシェルスクリプトで次のコマンドを使用してデーモンのパスを見つけようとしています

ただし、デーモンが存在しない場合は、次の形式で警告が表示されます。

no DaemonName .....bla bla bla

しかし、それを直接表示できないため、現在これを行っています

tmp=`which daemonName`
tmp2=`which daemonName | grep "no DaemonName"`
if [[ "$tmp2" != "" ]]
tmp=wrong name

単純な1行で同じことを行うにはどうすればよいですか?

私が本当に欲しいのは、デーモンが存在しない場合はデフォルトの文字列を提供し、存在する場合はwhichコマンド出力を提供することです。

4

3 に答える 3

1

これにより、tmp変数が希望どおりに設定されます。

tmp=$(which daemonName) || tmp="wrong name"

編集:この提案の問題の1つはwhich、AIXの奇妙な実装が示すように、コマンドの動作が標準化されていないことです。

を使用する場合、簡単な回避策は、コマンドを組み込みkshで置き換えることです。whichwhence

tmp=$(whence -f daemonName) || tmp="wrong name"
于 2012-04-13T11:48:27.693 に答える
0

これを行う:

tmp=$(which dawmonName 2>/dev/null)
: ${tmp:=wrong name}
echo "$tmp"

変数が NULL または未設定の場合、パーツはテキストを割り当て:=ますこの:コマンドは、パラメーター展開またはその引数を許可する以外は何もしません。

于 2012-04-13T13:31:57.627 に答える
0

which私のディストリビューションではそのエラーは報告されませんが、これはおそらくうまくいくでしょう:

tmp=`which daemonName 2> /dev/null`
...

基本的に、発生したエラー メッセージを破棄しているだけです。

于 2012-04-13T11:47:41.890 に答える