--version jest czymś wymyślonym przez GNU dla własnych poleceń, nie jest częścią POSIX i większość poleceń nie obsługuje --version. GNU awk tak robi, a awk --version robi coś sensownego w moim systemie. Dystrybucja fedorqui domyślnie używa czegoś innego niż GNU awk.
wingedsubmariner
@wingedsubmariner, który podałeś. Dzięki! Mój awk jest mawk, stąd nieistnienie version.
fedorqui
Odpowiedzi:
9
W tym przypadku man awkpokazuje nam:
-W wersja
mawk zapisuje swoją wersję i prawa autorskie na stdout i skompilował ograniczenia na stderr i kończy 0.
W moim przypadku,
$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
compiled limits:
max NF 32767
sprintf buffer 2040
działa niezależnie od tego, czy awk wywołuje mawk, gawk czy original-awk dostępne dla systemu Debian / Ubuntu Linux. Zauważ, że -Wi versionmuszą być połączone, aby original-awk nie uważał versionza program. W systemie Ubuntu Linux możesz użyć, sudo update-alternatives --config awkaby zobaczyć i wybrać implementację wywoływaną przez polecenie awk.
Nie wiem, jak standardem jest akceptacja połączonej opcji, ale nie jest konieczne używanie jej w moim doświadczeniu: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versionlub alternatywnie(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
mawk
, stąd nieistnienieversion
.Odpowiedzi:
W tym przypadku
man awk
pokazuje nam:W moim przypadku,
źródło
Staram się być bardziej ogólny.
awk -Wversion 2>/dev/null || awk --version
działa niezależnie od tego, czy awk wywołuje mawk, gawk czy original-awk dostępne dla systemu Debian / Ubuntu Linux. Zauważ, że
-W
iversion
muszą być połączone, aby original-awk nie uważałversion
za program. W systemie Ubuntu Linux możesz użyć,sudo update-alternatives --config awk
aby zobaczyć i wybrać implementację wywoływaną przez polecenie awk.źródło
awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --version
lub alternatywnie(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)