Saya punya naskah. myScript
.
Dibutuhkan dua argumen. myScript arg1 arg2
.
Katakanlah saya memiliki tiga set argumen.
argA1 argB1
argA2 argB2
argA3 argB3
Apakah ada cara untuk menyalurkan setiap baris ke myScript. Saya terbuka untuk memiliki set args dalam file, mungkin menggunakan xargs. Tidak yakin apa yang harus diselidiki.
Jadi saya akan menjalankan perintah seperti contoh palsu di bawah ini:
cat myFile | xargs > myScript
Tidak memiliki skrip lain, cukup perintah di baris perintah.
Jawaban yang Diterima:
Hanya:
xargs -l1 <myFile myScript
-l1
memberitahu xargs
untuk menjalankan myScript
sekali untuk setiap 1
l
salah satu input, dengan kata-kata di 1
itu l
ine diteruskan sebagai argumen terpisah.
Untuk xargs
, kata-kata dipisahkan dengan spasi, dan Anda masih dapat memiliki spasi (bahkan baris baru) dalam sebuah kata dengan menggunakan tanda kutip. Namun perhatikan bahwa while xargs
mendukung "..."
, '...'
dan \
untuk mengutip seperti kebanyakan shell, parsingnya berbeda dari shell seperti Bourne. Secara khusus, tidak ada pemrosesan garis miring terbalik di "..."
atau '...'
dan hanya \
dapat keluar dari baris baru.
Misalnya, myFile
dapat berisi:
word1.1 word1.2
"word 2.1" 'word 2.2'
"word'3.1" 'word"3.2'
'word"'"4'1" word\"4\'2
'word '\
5.1 "word "\
5.2
Dan
xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'
akan menghasilkan:
First word: "word1.1", second word: "word1.2"
First word: "word 2.1", second word: "word 2.2"
First word: "word'3.1", second word: "word"3.2"
First word: "word"4'1", second word: "word"4'2"
First word: "word
5.1", second word: "word
5.2"
Dengan implementasi GNU dari xargs
, Anda dapat meningkatkannya menjadi:
xargs -l1 -r -a myFile myScript
Yang memiliki manfaat meninggalkan stdin sendirian dan tidak menjalankan myScript
jika myFile
kosong.