Beberapa baris yang Anda posting dari skrip Anda terlihat oke bagi saya. Itu mungkin sesuatu yang sedikit lebih dalam.
Anda perlu menemukan baris mana yang memberi Anda kesalahan ini. Tambahkan set -xv
ke bagian atas skrip Anda. Ini akan mencetak nomor baris dan perintah yang dijalankan ke STDERR . Ini akan membantu Anda mengidentifikasi di bagian skrip mana Anda mendapatkan kesalahan khusus ini.
BTW, apakah Anda memiliki shebang di bagian atas skrip Anda? Ketika saya melihat sesuatu seperti ini, saya biasanya berharap ini adalah masalah dengan Shebang. Misalnya, jika Anda memiliki #! /bin/bash
di atas, tetapi penerjemah bash Anda berada di /usr/bin/bash
, Anda akan melihat kesalahan ini.
EDIT
Pertanyaan baru:Bagaimana cara menyimpan file dengan benar, untuk menghindari keharusan melakukan perbaikan ini setiap kali saya mengirim ulang file?
Dua cara:
- Pilih Edit->Konversi EOL->Format Unix item menu saat Anda mengedit file. Setelah memiliki akhiran baris yang benar, Notepad++ akan menyimpannya.
- Untuk memastikan semua file baru memiliki akhiran baris yang benar, buka Pengaturan->Preferensi item menu, dan tarik Preferensi kotak dialog. Pilih Dokumen Baru/Direktori Default tab. Di bawah Dokumen Baru dan Format , pilih Unix tombol radio. Klik tombol Tutup tombol.
Saya menggunakan perintah ini untuk memutar file sederhana:
mv output.log `date +%F`-output.log
Di folder lokal saya punya 2019-09-25-output.log
mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log
Metode satu baris dalam bash berfungsi seperti ini.
[beberapa keluaran]>$(date "+%Y.%m.%d-%H.%M.%S").ver
akan membuat file dengan nama stempel waktu dengan ekstensi ver. Pemotretan daftar file yang berfungsi ke nama file stempel tanggal sebagai berikut dapat menunjukkannya berfungsi.
find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver
Tentu saja
cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver
atau bahkan lebih sederhana
ls > $(date "+%Y.%m.%d-%H.%M.%S").ver