質問: シェルスクリプトの記述について シェルスクリプトの記述について質問させて頂きます。 ラズパイを最近始めたばかりの初心者です。 シェルスクリプトで以下のような命令文を記述すると、 sudo ./test 文字列 ・・・1 『test』プログラムが実行され、文字列が出力されます。 上記の応用として、test以下に記述する文字列がテキストファイルに保存されている場合に、 どのようなソースを記述すれば、1と同様の実行結果を得られますか? test=`cat test.txt` sudo ./test "$test" 上記のように記述しましたが、文字列は出力されませんでした。 以上、よろしくお願い致します。
回答: ○「文字列は出力されませんでした」 とは具体的に、どんな内容ですか? まったく何も出力されなかったのか、期待とは違う文字列が出力されたのか? ○該当箇所を sudo ./test 文字列 としたら期待通りに動作しますか? test=文字列 sudo ./test "$test" ではどうなりますか? ○ シェルスクリプトにデバッグ方法はいろいろとありますが、 スクリプト内で set -vx を実行する(あるいは sh -vx スクリプト 等と -vx オプションを付ける) と実行状況が出力されるようになります。 -v が読み込んだまま、 -x が変数展開が終った後の状態の出力です。 これを使って、 ・ちゃんと実行しているのか?途中で止まってたりしないか? ・ test=`cat test.txt` sudo ./test "$test" が test=文字列 sudo ./test 文字列 に展開されているかどうか を確認しましょう。