- ベストアンサー
シェルスクリプトでのechoで変数をファイルに追記する際にエラーが発生する
- シェルスクリプトでecho文を使用して変数をファイルに追記しようとするとエラーが発生します。
- エラー内容は「read.sh: line 89: /etc/ntp.conf: そのようなファイルやディレクトリはありません」と表示されます。
- 他の箇所では正常にecho文を使用しての追記が行えており、/etc/ntp.confファイルも存在しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
新規にファイルを作成して、そこへ書き込みたいと言うことでしょうか? ならば echo $add >> $file ではなく echo $add > $file でOK。 「>>」はファイルに追記する時に使うモノです。
その他の回答 (2)
- lupin-333333
- ベストアンサー率31% (294/933)
No2さんの指摘も、ありうると思います。よくユーザー関数にしているとLineデーターが違ってきます。 >、echo文を使用しての追記は正常に これは、ほとんど意味がありません。 >、/etc/ntp.confは存在しており、catコマンドで内容の出力ができることを も、チェック事項としては意味を持ちません。何せリダイレクトの指示は、あってもなくてもかまわないからです。なければ新規に作成し、あれば、アペンドします。 その時に問題になるのは、存在していた時に、書き込み権があるかどうかです。また、他のプロセスによって排他制御されていないことです(自身かもしれないが)。 その2つを調べないとだめですよね?????? >catコマンドで内容の出力ができることを は読み取り実行権だけは、在るようですね。あなは書き込みしたいんですよね。書き込みできるかどうかチェックしないと。 それと、そのスクリプトを実行する実行ユーザーの権限です。書き込みに関しては、その3つ。 話を最初に戻して、そのLineかどうか、確かにecho での問題なのかですが、そうだと思われる箇所の書き換えですよね。echo test >> /tmp/1234 とかに書き換える事ですね。で、それが成功し次に、echo $add >> >> /tmp/1234が成功したら、$add 変数の書き込みは 問題ないようですね。次に /etc/12345 に書き換えたらどうなりますか? それが成功したら $file にしてください。 ちなみに変数は ${file} などと、スクリプトが大きくなれば正当な書き方が必要になります。 そのような試行した記述がないのが全く持って不思議ですね。普通やると思いますが? 何でしょうね。
- notnot
- ベストアンサー率47% (4900/10358)
echo $add >> $file という文で、 read.sh: line 89: /etc/ntp.conf: そのようなファイルやディレクトリはありません というエラーは絶対に出ませんので、何か勘違いをされていると思います。もう一度見直してください。別の行では?
補足
Cupper-2様 ご回答有難うございます。 既存ファイルに文字列を追加したいと考えております。