Těch pár řádků, které jsi zveřejnil ze svého scénáře, mi přijde v pořádku. Je to pravděpodobně něco trochu hlubšího.
Musíte zjistit, který řádek vám dává tuto chybu. Přidejte set -xv
na začátek skriptu. Tím se vytiskne číslo řádku a příkaz, který se provádí do STDERR . To vám pomůže určit, kde ve vašem skriptu dochází k této konkrétní chybě.
BTW, máte v horní části skriptu shebang? Když vidím něco takového, normálně očekávám, že je to problém se Shebangem. Pokud jste například měli #! /bin/bash
nahoře, ale váš bash interpret se nachází v /usr/bin/bash
, zobrazí se tato chyba.
UPRAVIT
Nová otázka:Jak mohu soubor správně uložit, abych nemusel tuto opravu provádět pokaždé, když soubor znovu pošlu?
Dva způsoby:
- Vyberte Upravit->Konverze EOL->Formát Unix při úpravě souboru. Jakmile bude mít správné konce řádků, Notepad++ je zachová.
- Chcete-li se ujistit, že všechny nové soubory mají správné konce řádků, přejděte na Nastavení->Předvolby položku nabídky a vytáhněte Předvolby dialogové okno. Vyberte Nový dokument/výchozí adresář tab. V části Nový dokument a Formátovat , vyberte Unix přepínač. Klikněte na tlačítko Zavřít tlačítko.
Tento příkaz používám pro jednoduché otočení souboru:
mv output.log `date +%F`-output.log
V místní složce mám 2019-09-25-output.log
mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log
Jednořádková metoda v bash funguje takto.
[nějaké ven]>$(datum "+%Y.%m.%d-%H.%M.%S").ver
vytvoří soubor s názvem časového razítka s příponou ver. Pracovní soubor se záznamem snímku s názvem souboru s datovým razítkem může ukázat, že to funguje.
find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver
Samozřejmě
cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver
nebo ještě jednodušší
ls > $(date "+%Y.%m.%d-%H.%M.%S").ver