Questo mi sta facendo impazzire da ore ormai.Gestione degli argomenti della riga di comando Perl con spazi da uno script bash?
Si consideri il seguente script di prova in Perl: (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";
}
Ok, stampa semplicemente gli argomenti della riga di comando dato allo script.
Per esempio:
$ ./hello.pl apple pie
----------------------------------
thanks, you gave me 2 command-line arguments:
apple
pie
posso dare il copione di un singolo argomento con uno spazio circondando le parole con le virgolette:
$ ./hello.pl "apple pie"
----------------------------------
thanks, you gave me 1 command-line arguments:
apple pie
Ora voglio utilizzare questo script in un guscio script. Ho installato lo script di shell in questo modo:
#!/bin/bash
PARAM="apple pie"
COMMAND="./hello.pl \"$PARAM\""
echo "(command is $COMMAND)"
$COMMAND
sto chiamando il hello.pl con gli stessi params e scappai citazioni. Questo script restituisce:
$ ./test.sh
(command is ./hello.pl "apple pie")
----------------------------------
thanks, you gave me 2 command-line arguments:
"apple
pie"
Anche se la variabile $ COMANDO fa eco il comando esattamente come il modo in cui mi sono imbattuto lo script Perl dalla linea di comando per la seconda volta, questa volta non vuole vedere la torta di mele come un singolo argomento.
Perché no?