1
考慮下面的ksh腳本「myquery.ksh」eval命令功能通配符時,我不希望它
#/usr/bin/env ksh -eu
PROCESS_TYP=$1
PROCESS_DT=$2
#Generate a query
makeSQL()
{
local numfiles=0
local query='SEL \\* FROM TABLE_1_'
case "$1" in
'ABC') query="${query}ABC" ; numfiles=1 ;;
'DEF') query="${query}DEF" ; numfiles=7 ;;
esac
query="${query}_V WHERE LOAD_DT='${2}';"
printf "$query\n"
eval $3="${query}"
eval $4=$numfiles
return 0
}
makeSQL $PROCESS_TYP $PROCESS_DT qry num_files
printf "QUERY: $qry\n"
printf "NUMFILES: $num_files\n"
在上面的代碼中,eval $ 3 =「$ {查詢} 「聲明從不正確工作。在所有情況下,它似乎試圖在「本地查詢=」...語句中將「*」進行整數化。
./myquery.ksh ABC 2011-01-01
它總是返回這樣的信息:
./myquery.ksh: line 17: \*: command not found
我敢肯定這是我如何在這種情況下應用的eval但已經試過幾乎所有的替代語法構造我自己的用戶錯誤做這個評估3美元的任務,但無法完成這項工作。
,因爲我敢肯定它也將表現相同那裏還有我已標記這是慶典...
太棒了,工作。但爲什麼? :) – user1267616 2012-03-13 22:38:22
我添加了一個解釋。 – 2012-03-14 08:24:54