GNU/Linux >> Belajar Linux >  >> Linux

Cetak output dari pernyataan cat dalam loop skrip bash

Anda menggunakan jenis kutipan yang salah.

Anda perlu menggunakan tanda kutip belakang daripada tanda kutip tunggal untuk menjadikan argumen sebagai program yang berjalan dan menyalurkan konten ke forloop.

for tbl in `cat /tmp/tables` 
do 
    echo "$tbl"
done

Juga untuk keterbacaan yang lebih baik (jika Anda menggunakan bash), Anda dapat menulisnya sebagai

for tbl in $(cat /tmp/tables) 
do 
    echo "$tbl"
done

Jika harapan Anda adalah untuk mendapatkan setiap baris (For-loop di atas akan memberi Anda setiap kata), maka Anda mungkin lebih baik menggunakan xargs , seperti ini

cat /tmp/tables | xargs -L1 echo

atau sebagai loop

cat /tmp/tables | while read line; do echo "$line"; done

Kutipan tunggal harus backticks:

for tbl in `cat /etc/tables`

Meskipun, ini tidak akan memberi Anda output/input per baris, tetapi per kata. Untuk memproses baris demi baris, Anda harus mencoba sesuatu seperti:

cat /etc/tables | while read line
    echo $line
done

Linux
  1. Apakah mungkin membuat skrip bash shell berinteraksi dengan program baris perintah lain?

  2. Baca baris demi baris dalam skrip bash

  3. menjalankan skrip php (fungsi php) di linux bash

  1. Mensimulasikan penekanan tombol ENTER dalam skrip bash

  2. Di bash, apakah ada cara untuk mengulang/mencetak stdout terakhir? Apakah ada variabel yang ditugaskan ke stdout?

  3. Mengirim penekanan tombol yang disimulasikan di Bash

  1. Lewati Argumen Baris Perintah ke Skrip Bash?

  2. Bash Echo Baris Perintah Dieksekusi Di Baris Perintah Itu Sendiri (bukan Dalam Script)?

  3. Tambahkan jeda baris ke keluaran perintah