GNU/Linux >> Belajar Linux >  >> Linux

Di shell Linux, bagaimana saya bisa memproses setiap baris dari string multiline?

Cukup berikan string Anda ke fungsi Anda:

function my_function
{
    while test $# -gt 0
    do
        echo "do something with $1"
        shift
    done
}
my_string="cat
dog
bird"
my_function $my_string

memberi Anda:

do something with cat
do something with dog
do something with bird

Dan jika Anda benar-benar peduli dengan spasi putih lain yang diambil sebagai pemisah argumen, atur dulu IFS Anda :

IFS="
"
my_string="cat and kittens
dog
bird"
my_function $my_string

untuk mendapatkan:

do something with cat and kittens
do something with dog
do something with bird

Jangan lupa unset IFS setelah itu.


Gunakan ini (ini adalah pengulangan membaca setiap baris dari file file )

cat file | while read -r a; do echo $a; done

di mana echo $a adalah apa pun yang ingin Anda lakukan dengan saluran saat ini.

PEMBARUAN:dari komentator (terima kasih!)

Jika Anda tidak memiliki file dengan banyak baris, tetapi memiliki variabel dengan banyak baris, gunakan

echo "$variable" | while read -r a; do echo $a; done

UPDATE2:"read -r " disarankan untuk menonaktifkan garis miring terbalik (\ ) interpretasi karakter (periksa komentar mtraceur; didukung di sebagian besar shell). Ini didokumentasikan dalam POSIX 1003.1-2008 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html

Secara default, kecuali opsi -r ditentukan, <backslash> akan bertindak sebagai karakter melarikan diri. .. Opsi berikut didukung:-r - Jangan perlakukan <backslash> karakter dengan cara khusus. Anggap masing-masing sebagai bagian dari jalur masukan.


Linux
  1. Cara menggemakan Baris Baru di Bash Shell Script

  2. Cara menggunakan fungsi shell baris perintah di Linux

  3. Bagaimana cara mengubah karakter hex ke ASCII di shell Linux?

  1. Bagaimana cara mengubah output shell Linux ke HTML?

  2. Bagaimana saya bisa tahu di Linux proses mana yang mengirim sinyal ke proses saya

  3. cara membatasi panjang string yang ada dalam satu baris menggunakan linux

  1. Bagaimana cara menyisipkan baris baru di skrip shell Linux?

  2. Bagaimana cara membalik daftar kata dalam string shell?

  3. Bagaimana saya bisa menyalin folder dari baris perintah Linux?