• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプトでのechoについて)

シェルスクリプトでのechoで変数をファイルに追記する際にエラーが発生する

このQ&Aのポイント
  • シェルスクリプトでecho文を使用して変数をファイルに追記しようとするとエラーが発生します。
  • エラー内容は「read.sh: line 89: /etc/ntp.conf: そのようなファイルやディレクトリはありません」と表示されます。
  • 他の箇所では正常にecho文を使用しての追記が行えており、/etc/ntp.confファイルも存在しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

新規にファイルを作成して、そこへ書き込みたいと言うことでしょうか? ならば  echo $add >> $file ではなく  echo $add > $file でOK。 「>>」はファイルに追記する時に使うモノです。

hakuli3
質問者

補足

Cupper-2様 ご回答有難うございます。 既存ファイルに文字列を追加したいと考えております。

その他の回答 (2)

回答No.3

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)
回答No.2

echo $add >> $file という文で、 read.sh: line 89: /etc/ntp.conf: そのようなファイルやディレクトリはありません というエラーは絶対に出ませんので、何か勘違いをされていると思います。もう一度見直してください。別の行では?