Czy można sformatować tę próbkę:
for i in string1 string2 stringN
do
echo $i
done
do czegoś podobnego do tego:
for i in
string1
string2
stringN
do
echo $i
done
EDYCJA: Przepraszam za zamieszanie, nie zdawałem sobie sprawy, że istnieją różne metody wykonywania skryptu - sh <scriptname>
versus, bash <scriptname>
a także to, czego nie mogę teraz wymienić - #!/bin/sh
i #!/bin/bash
:)
Odpowiedzi:
Używanie tablic w bash może poprawić czytelność: ta składnia tablicy pozwala na dowolne spacje między słowami.
źródło
sh
niekoniecznie jest to Bash, a zwłaszcza nie dotyczy Debiana i Ubuntu.Możesz uciec przed łamaniem linii za pomocą odwrotnego ukośnika:
źródło
Możesz uciec od nowego wiersza przed / po każdym przewijanym elemencie:
Lub dla tego prostego przykładu:
co ma ten sam wynik.
Związane z:
Odmiana za pomocą
bash
tablicy:źródło
Jeśli przejście do
zsh
jest opcją:źródło
źródło
$list
ciąg zawiera znaki globowania nazw plików (list='* * * *'
), powłoka potencjalnie zastąpiłaby je pasującymi nazwami plików.Możesz użyć
loop
polecenia dostępnego tutaj :lub, jeśli masz listę jako plik:
źródło
To samo, mniej tekstu:
źródło
string1
itp. nie są literalnymi wartościami do wyświetlenia, są symbolami zastępczymi, więc to podejście nie działa.array ( … )
? po prostu zróbfor i in string{1..7}; do echo "$i"; done
; parzystyprintf '%s\n' string{1..7}