Bu saatlerce beni deli ediyor.Perl komut satırı argümanlarını bir bash komut dosyasından alanlarla mı?
perl'de aşağıdaki test komut dosyası düşünün: (hello.pl)
#!/usr/bin/perl
print "----------------------------------\n";
$numArgs = $#ARGV + 1;
print "thanks, you gave me $numArgs command-line arguments:\n";
foreach $argnum (0 .. $#ARGV) {
print "$ARGV[$argnum]\n";
}
Tamam, sadece komut verilen komut satırı argümanları yazdırır.
$ ./hello.pl "apple pie"
----------------------------------
thanks, you gave me 1 command-line arguments:
apple pie
Şimdi bir kabuk içinde bu komut dosyasını kullanmak istiyorum: Ben çift tırnak sözcükleri çevreleyen tarafından bir script boşlukla tek argüman verebilir
$ ./hello.pl apple pie
----------------------------------
thanks, you gave me 2 command-line arguments:
apple
pie
: Mesela
senaryo. Böyle shell script kurdum: Ben de aynı parametreleri içeren hello.pl arama ve tırnak kaçan am
#!/bin/bash
PARAM="apple pie"
COMMAND="./hello.pl \"$PARAM\""
echo "(command is $COMMAND)"
$COMMAND
. Bu komut verir: $ KOMUTANLIĞI değişken bu sefer o kadar elmalı turta görmek istemiyor, tam olarak komut satırından perl komut dosyası ikinci kez koştu yol gibi komutu yankıları olsa
$ ./test.sh
(command is ./hello.pl "apple pie")
----------------------------------
thanks, you gave me 2 command-line arguments:
"apple
pie"
tek bir argüman.
Neden değil?