0

シェル スクリプトを作成しており、su コマンド内で STDOUT をファイルにパイプしたいと考えています。出力されたファイルは別のユーザーが所有する必要があるため、su を使用します。ただし、出力するテキストと出力ファイルの名前が変数の場合、パイプを su で動作させることはできません(以下の例を参照)。

私の回避策は、su を使用せずにファイルにパイプし、そのファイルを必要なユーザーに chown することです。ただし、suを使用してこれを行う「シングルステップ」の方法があるかどうか疑問に思っていましたか?

例 (説明のみ):

#!/bin/sh

message="Hello World";
file="/tmp/HelloWorld.txt";

su someuser -c 'echo "${message}" > "${file}"';

この例のように${file}二重引用符で囲むと、次のエラーが発生します。

bash: : No such file or directory

を囲む二重引用符を削除すると${file}、次のエラーが発生します。

bash: ${file}: ambiguous redirect
4

1 に答える 1

1

試すsu someuser -c "echo \"${message}\" > ${file}";

一重引用符内の変数は展開されません。

于 2011-12-29T10:08:36.767 に答える