これは私を数時間運転しています。bashスクリプトのスペースを使用したPerlコマンドライン引数の処理?
は、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]を、単にスクリプトに与えられたコマンドライン引数をプリントアウトします。
$ ./hello.pl "apple pie"
----------------------------------
thanks, you gave me 1 command-line arguments:
apple pie
は、今私はシェルでこのスクリプトを使用したい:私は、二重引用符で単語を囲んでスクリプトをスペースで単一の引数を与えることができます
$ ./hello.pl apple pie
----------------------------------
thanks, you gave me 2 command-line arguments:
apple
pie
:例えば
スクリプト。私はこのようなシェルスクリプトを設定している:私は同じのparamsとhello.plを呼び出して、引用符をエスケープしています
#!/bin/bash
PARAM="apple pie"
COMMAND="./hello.pl \"$PARAM\""
echo "(command is $COMMAND)"
$COMMAND
。 このスクリプトを返します。$ COMMAND変数は、この時間は、それはのようにアップルパイを見たいと思っていない、まさに私は、コマンドラインからperlスクリプトをもう一度実行方法のようにコマンドをエコーしていても
$ ./test.sh
(command is ./hello.pl "apple pie")
----------------------------------
thanks, you gave me 2 command-line arguments:
"apple
pie"
単一の引数。
どうしてですか?