スクリプトから投稿した数行は、私には問題ないように見えます。おそらくもう少し深いものです。
このエラーが発生している行を見つける必要があります。 set -xv
を追加 スクリプトの先頭に。これにより、行番号と実行中のコマンドが STDERR に出力されます .これは、スクリプト内でこの特定のエラーが発生している場所を特定するのに役立ちます。
ところで、スクリプトの先頭にシバンがありますか?このようなものを見ると、通常はシバンの問題だと思います。たとえば、#! /bin/bash
があった場合 上にありますが、bash インタープリターは /usr/bin/bash
にあります。 、このエラーが表示されます。
編集
<ブロック引用>新しい質問:ファイルを再送信するたびにこの修正を実行する必要がないようにするには、そもそもファイルを正しく保存するにはどうすればよいですか?
2 つの方法:
<オール>このコマンドを使用して、ファイルを単純にローテーションします:
mv output.log `date +%F`-output.log
ローカルフォルダーには 2019-09-25-output.log
があります
mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log
bash 内の単一行メソッドは次のように機能します。
[一部出力]>$(date "+%Y.%m.%d-%H.%M.%S").ver
は、ver 拡張子を持つタイムスタンプ名を持つファイルを作成します。次のような日付スタンプ ファイル名へのスナップ ショットをリストする作業ファイルは、それが機能していることを示します。
find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver
もちろんです
cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver
またはもっと簡単
ls > $(date "+%Y.%m.%d-%H.%M.%S").ver