2010-10-22 15 views
38

Bir Java programını dahili olarak çağıran bir kabuk komut dosyasına herhangi bir sayıda argüman iletirsem, ikinci bağımsız değişkeni, ilk program dışında, Java programına nasıl aktarabilirim?İkinci bağımsız değişkeni bir kabuk komut dosyasından Java'ya aktarma

./my_script.sh abcd ....

#my_script.sh 
... 
java MyApp b c d ... 
+0

İlgili: http://stackoverflow.com/questions/28057815/how-to-get-second-to-last-argument-from-previous-bash-command –

cevap

58

ilk argüman "tüketmek" için İlk kullanım shift, o zaman, yani "[email protected]" kalan argümanlar listesini iletmek:

#my_script.sh 
... 
shift 
java MyApp "[email protected]" 
+4

özel bir parametre '@' gereken " her zaman "alıntı": "$ @", aksi takdirde $ $ 'den farklı değildir. Ayrıca, 'shift'den sonra, daha önce kaydedilmemişse, ilk parametrenin kaybolduğundan da bahsedilmelidir. – enzotib

+0

@enzotib Teşekkürler, ben $ @ 'alıntı yaptım. – Bolo

+3

Alıntı yapmamak, tüm argümanların tek bir argüman olarak mı, uzay-ayrılmış argümanların bir listesi olarak geçmesine neden olmaz mı? Bu cevabın popülaritesi göz önüne alındığında değil, ama açıklayabilirsin. –

31

Ayrıca "shift" kullanmadan ikinci argümanı ileriye taşıyabilirsiniz.

set -- 1 2 3 4 5 

echo "${@:0}" 
echo "${@:1}" 
echo "${@:2}" # here 
+7

, "sh" değil, yalnızca "bash" içinde çalışmaz. buna altyazı genişletme denir ve '@' için özel bir davranışı vardır. genellikle karakterleri sayar, ancak '' 'için parametreleri sayar. – lesmana

İlgili konular