Apakah mungkin memformat sampel ini:
for i in string1 string2 stringN
do
echo $i
done
untuk sesuatu yang mirip dengan ini:
for i in
string1
string2
stringN
do
echo $i
done
EDIT: Maaf untuk kebingungan, tidak menyadari bahwa ada metode berbeda dalam mengeksekusi skrip - sh <scriptname>
versus bash <scriptname>
dan juga hal ini yang tidak dapat saya sebutkan sekarang - #!/bin/sh
dan #!/bin/bash
:)
Jawaban:
Menggunakan array dalam bash dapat membantu keterbacaan: sintaks array ini memungkinkan spasi kosong di antara kata-kata.
sumber
sh
belum tentu Bash, dan terutama tidak di Debian dan Ubuntu.Anda dapat menghindari linebreak dengan backslash:
sumber
Anda dapat keluar dari baris baru sebelum / setelah setiap item yang Anda putar:
Atau, untuk contoh sederhana ini:
yang memiliki hasil yang sama.
Terkait:
Variasi menggunakan
bash
array:sumber
Jika beralih ke
zsh
adalah opsi:sumber
Anda dapat menggunakan
loop
perintah, tersedia di sini , seperti:atau, jika Anda memiliki daftar sebagai file:
sumber
sumber
$list
string berisi karakter nama globbing karakter (list='* * * *'
), shell berpotensi menggantikannya dengan nama file yang cocok.Hal yang sama, lebih sedikit teks:
sumber
string1
dll. bukan nilai literal untuk ditampilkan, mereka adalah penampung, jadi pendekatan ini tidak berfungsi.array ( … )
? lakukan sajafor i in string{1..7}; do echo "$i"; done
; evenprintf '%s\n' string{1..7}