GNU/Linux >> Belajar Linux >  >> Linux

menggunakan linux bagaimana saya bisa meneruskan konten file sebagai parameter ke yang dapat dieksekusi?

Ini seharusnya berhasil:

./program `cat file`

Jika Anda ingin seluruh konten file dalam satu argumen, tambahkan kutipan ganda (diuji dalam bash. Saya pikir Ini mungkin berbeda dari shell ke shell):

./program "`cat file`" 

Perintah

./program "$(< file)"

Penjelasan

  1. $(cmd) menjalankan perintah dan mengubah hasilnya menjadi string. $(cmd) juga dapat ditulis dengan backticks sebagai `cmd` . Saya lebih suka $(cmd) yang lebih baru karena bersarang lebih baik daripada backtick jadul.

  2. Perintah yang kita inginkan adalah cat file . Dan kemudian dari halaman bash man:

    Substitusi perintah $(cat file) dapat diganti dengan $(< file) yang setara tetapi lebih cepat .

  3. Tanda kutip di sekitarnya memastikan bahwa spasi putih dipertahankan, kalau-kalau Anda memiliki spasi atau baris baru di dalam file Anda. Mengutip hal-hal dengan benar dalam skrip shell adalah keterampilan yang sangat kurang. Mengutip variabel dan substitusi perintah adalah kebiasaan yang baik untuk dilakukan sehingga Anda tidak mendapatkan bit nanti ketika nama file atau nilai variabel Anda memiliki spasi atau karakter kontrol atau keanehan lainnya.


Anda dapat menggunakan salah satu dari:

./program $(cat file)
./program "$(cat file)"

Yang terakhir berguna jika mungkin ada banyak kata dalam file dan Anda ingin mereka diperlakukan sebagai argumen tunggal. Bagaimanapun, saya lebih suka menggunakan if $() ke backticks hanya karena kemampuannya untuk membuat sarang (yang mungkin bukan persyaratan dalam hal ini).

Perlu diingat juga bahwa jawaban ini (dan lainnya) lebih terkait dengan shell yang digunakan daripada Linux itu sendiri. Sejak dominan shell sepertinya bash , saya telah membuat kode khusus untuk itu.

Ini sebenarnya cara yang cukup umum untuk mematikan proses di bawah tampilan UNIX. Daemon (seperti cron ) akan menulis ID prosesnya ke file (seperti /var/cron.pid ) dan Anda dapat menandainya dengan sesuatu seperti:

kill -HUP $(cat /var/cron.pid)

Linux
  1. Bagaimana Melewati Isi File Sebagai Parameter Baris Perintah?

  2. Bagaimana saya bisa menghubungkan file di Linux?

  3. Bagaimana saya bisa menghitung jumlah folder di drive menggunakan Linux?

  1. Cara Menggunakan Perintah Tar di Linux

  2. Bagaimana saya bisa mengedit semua file yang dikembalikan oleh find in vi di Linux?

  3. Bagaimana saya bisa mencetak konten alih-alih nama file dari menggunakan perintah linux find?

  1. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  2. Bagaimana cara mengacak baris dalam file menggunakan alat standar di Red Hat Linux?

  3. Linux + cara memberikan hanya pengguna tertentu untuk membaca file