我瘋了這個......讓我解釋一下......bash腳本中字符串變量的奇怪行爲...請幫忙!
我有一個非常簡單的Bash腳本,它有一個函數,它接收3個參數。這些論據都是字符串。一切工作正常'直到我必須傳遞一個字符串與空格到函數。
我也有一些測試代碼來調用函數(他的名字是substracFromFile):
# try the function
PATTERN=`echo -e '<Location test14>'`
echo "PATTERN IS $PATTERN"
HEADERPATTERN=`echo -e '<Location [a-zA-Z0-9]*>'`
echo "HEADERPATTERN IS $HEADERPATTERN"
FILE="subversion.conf"
echo "FILE IS $FICHERO"
substracFromFile $PATTERN $HEADERPATTERN $FILE
的這個輸出是:
PATTERN IS <Location prueba14>
HEADERPATTERN IS <Location [a-zA-Z0-9]*>
FILE IS subversion.conf
PATTERN ARGUMENT IS <Location
HEADERPATTERN ARGUMENT IS prueba14>
FILE ARGUMENT IS <Location
grep: <Location: No such file or directory
expr: syntax error
正如你所看到的,當參數傳遞功能和我呼應他們屏幕他們在某種程度上分裂在白色空間...讓我告訴你功能初始代碼:
function substracFromFile
{
PATTERN=$1
HEADERPATTERN=$2
FILE=$3
# Debug only
echo "HEADER ARGUMENT IS $PATTERN"
# Debug only
echo "HEADERPATTERN ARGUMENT IS $HEADERPATTERN"
# Debug only
echo "FILE ARGUMENT IS $FILE"
只要傳遞的字符串根本沒有空格,它就可以工作得很甜蜜。當我調用函數字符串似乎沒問題,但我不明白爲什麼他們被分割一旦函數被調用....我敢肯定這是非常沉悶的東西,但我只是不明白它.. 。
在預先感謝你的問題的 亞歷
嘗試向所有變量添加雙引號 – ghostdog74 2010-08-03 11:47:46