這已經讓我堅持了幾個小時。使用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";
}
好吧,這只是輸出給腳本的命令行參數。
例如:
$ ./hello.pl "apple pie"
----------------------------------
thanks, you gave me 1 command-line arguments:
apple pie
現在我想在shell中使用這個腳本:
$ ./hello.pl apple pie
----------------------------------
thanks, you gave me 2 command-line arguments:
apple
pie
我可以用雙引號包圍的話給腳本用空格一個參數腳本。我已經設置了shell腳本是這樣的:
#!/bin/bash
PARAM="apple pie"
COMMAND="./hello.pl \"$PARAM\""
echo "(command is $COMMAND)"
$COMMAND
我打電話與同PARAMS的hello.pl和轉義引號。 此腳本返回:
$ ./test.sh
(command is ./hello.pl "apple pie")
----------------------------------
thanks, you gave me 2 command-line arguments:
"apple
pie"
即使$ COMMAND變量相呼應的命令一模一樣,我跑在命令行Perl腳本第二時間的方式,這個時候它不希望看到蘋果餡餅一個參數。
爲什麼不呢?