#!/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}"\""
在这里,如果我复制echo输出并从命令行运行它 - 它的工作,但最后一行失败(我用引号和转义字符测试了不同的方法,但没有成功。
答案 0 :(得分: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}"