2011-10-12 68 views
1
#!/bin/bash 

shopt -s nullglob 
eval="c:cd(\\\"src/\\\")," 

for f in src/*.erl 
do 
    filename=`basename "$f"` 
    eval=${eval}" c:c(\\\"$filename\\\")," 
done 

eval=${eval}" c:q()." 
echo erl -eval "\""${eval}"\"" 
erl -eval "\""${eval}"\"" 

在這裏,如果我複製回聲輸出和命令行運行它 - 它的工作,但最後一行失敗(我與報價測試不同的方法和逃生字符,但。失敗作品從回聲複製,但不是直接從批處理文件

回答

2

調用erl -eval當你不需要的反斜槓是你正在構建(這是所有報價反正)字符串的一部分,而你並不需要額外的雙引號:

#!/bin/bash 

shopt -s nullglob 
eval="c:cd(\"src/\")," 

for f in src/*.erl 
do 
    filename=`basename "$f"` 
    eval=${eval}" c:c(\"$filename\")," 
done 

eval=${eval}" c:q()." 
echo erl -eval "\""${eval}"\"" 
erl -eval "${eval}"