Wpis z mikrobloga

jak mogę w bashu zapisać zmienną z 2 spacjami?
codzi mi o datę mam w pliku: aug(tutaj 2 spacje)3?
miesiace=('' 'Jan' 'Feb' 'Mar' 'Apr' 'May ' 'Jun' 'Jul' 'Aug' 'Sept' 'Oct' 'Nov' 'Dec')
#miesiac=${miesiace[$(date "+%m")]}
miesiac=${miesiace[$(date +'%-m')]}
#dzien=$(date "+%d")
#dzien="3"
dzien=$(date +'%-d')
if (( $dzien <= 9 )); then
filtr=$miesiac"(tutaj 2 spacje)"$dzien
else
filtr= $miesiac" "$dzien
fi
a on dalej mi wyświetla Aug 3 (z jedną spacją)
#programowanie #linux
  • 14
@mati1990: no to sprawdź wyrażenie warunkowe, bo raczej do "złej" gałęzi twój kod trafia.

Jeżeli chcesz debugować, to używaj "mocniej" rozróżnialnych wyrażeń do "dupa logów" w gałęziach warunkowych.

Jeżeli brakuje ci wyrazów, to np. możesz użyć jakiś nazw w "dupa logach":
https://pl.wiktionary.org/wiki/Indeks:Polski_-_Warzywa
https://pl.wiktionary.org/wiki/Indeks:Polski_-_Owoce
https://pl.wikipedia.org/wiki/Kuchnia_polska#Potrawy_tradycyjne

Tutaj masz opisane jak debuggować w Bashu:
https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html
@patrolez: chodzi o munina
jak mu z palca to odpale: radlast -n1000 | sed 's/[[:space:]][[:space:]]*/ /g' | grep "Aug 3" | grep "still logged in" | cut -d " " -f1 | sort -f | tr 'A-Z' 'a-z' > /var/tmp/logged
działa bez problemu
@patrolez: radlast -n1000 | sed 's/[[:space:]][[:space:]]*/ /g' | grep $filtr | grep "still logged in" | cut -d " " -f1 | sort -f | tr 'A-Z' 'a-z' > /var/tmp/logged
a jak to ze skryptu nie rysuje, echo $filtr = Aug 3
@mati1990: na pewno bardziej, niż bez "...", a przynajmniej jesteś bliżej poprawnego rozwiązania.
https://www.tldp.org/LDP/abs/html/quotingvar.html#FTN.AEN2630

Poćwicz sobie:
* getopts, to nabieżesz wprawy po co jest "..." https://linuxconfig.org/how-to-use-getopts-to-parse-a-script-options
* IFS https://bash.cyberciti.biz/guide/$IFS

Ogólnie "...", IFS oraz typ Array to najważniejsze rzeczy w Bashu. Dobrze użyte eliminują przypadki używania niebezpiecznego eval.