Saya punya dua skrip bash berikut
Abu:
#!/bin/bash
./b.sh 'My Argument'
b.sh:
#!/bin/bash
someApp $*
Biner someApp menerima $*
sebagai 2 argumen ('Saya' dan 'Argumen'), bukan 1.
Saya telah menguji beberapa hal:
- Menjalankan someApp hanya melalui
b.sh
berfungsi seperti yang diharapkan - Iterasi + gema argumen dalam
b.sh
karya seperti yang diharapkan - Menggunakan
$@
alih-alih$*
tidak membuat perbedaan
someApp "$*"
atausomeApp "$@"
Jawaban:
$*
, tanpa tanda kutip, berkembang menjadi dua kata. Anda perlu mengutipnya sehinggasomeApp
menerima satu argumen.someApp "$*"
Mungkin Anda ingin menggunakan
$@
sebagai gantinya, sehinggasomeApp
akan menerima dua argumen jika Anda memanggilb.sh
sebagaib.sh 'My first' 'My second'
Dengan
someApp "$*"
,someApp
akan menerima satu argumenMy first My second
. DengansomeApp "$@"
,someApp
akan menerima dua argumen,My first
danMy second
.sumber
$@
dan$*
bekerja dengan identik.IFS=$'\n'
. Tidak tahu kenapa.