Uczę się skryptowania powłoki z przestarzałego podręcznika i wydaje mi się, że przydałby się program, który po prostu zwraca ciąg liczb oddzielonych spacjami coś w rodzaju
$ range 10 20
10 11 12 13 14 15 16 17 18 19 20
Następnie, jeśli robisz skrypt powłoki, możesz go mieć
for i in `range 10 20`; do some stuff with numbers in that range;done
czy coś takiego istnieje, czy też muszę sam to napisać?
range
sięseq
w swoim przykładzie. domyślnym separatorem jest nowa linia, aby mieć spacje:seq -s " " 10 20
for
pętli - ani nawet w dowolnym ogólnym poleceniu, które dzieli argumenty - chyba że ustawisz IFS inaczej.seq
ponieważ nie jest to określone przez POSIX.Odpowiedzi:
seq
jest częścią coreutils.Wydajność:
Jeśli podasz tylko 2 argumenty
seq
, przyrost wynosi 1:źródło
sed
ma również ładne opcje, takie jak-s
ustawić separator lub-w
wyrównać szerokość. I możesz podać przyrost:seq -w -s ", " 0 5 20
wyniki w 00, 05, 10, 15, 20 .seq
?seq 10 20
warto też dodać prosty przykład;)Czy Bash wystarczy?
Możesz robić wiele rzeczy dzięki rozszerzaniu nawiasów klamrowych . Bash 4 obsługuje również wyściełane zakresy, np
{01..20}
.Zauważ, że Bash nie jest uważany za przenośny i nie jest standardowym narzędziem uniksowym. Chociaż możesz bezpiecznie założyć, że jest on zainstalowany na większości nowoczesnych Linuksów, nie używaj tego w skrypcie, który planujesz uruchomić na wszelkiego rodzaju komputerach uniksowych.
źródło
seq
. Użycie jest jak w przykładzie:seq -s " " 10 20
. Ten-s
parametr jest konieczny, ponieważ domyślnie wartości są oddzielone\n
.seq
jest to narzędzie GNU, a zatem nie jest to „standardowy programfor i in {001..010}; ... ; done
a liczba ta zostanie wyzerowana do 3 cyfr.Jeśli chcesz czegoś ściśle przenośnego (tj. Nie zależy ono od określonych rozszerzeń bash lub poleceń nieokreślonych przez POSIX)
źródło
/dev/null
czy dodawać< /dev/null
?If the awk program contains no actions and no patterns, but is otherwise a valid awk program, standard input and any file operands shall not be read and awk shall exit with a return status of zero.
Przed 10.7 nie było
seq
systemu Mac OS X, alejot
ze względu na dziedzictwo BSD.Przykład:
źródło
Użyj
for
pętliźródło
Możesz użyć
seq
lub, jeśli go nie masz, możesz napisać to sam:Stosowanie:
Lub:
źródło
Dla kompletności tutaj coś, co będzie działać z niektórymi starszymi wariantami Uniksa (o ile mają one zainstalowany perl). Niezbyt elegancki.
źródło