从 echo 复制的作品,但不是从批处理文件复制的作品
#!/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 输出并从命令行运行它 - 它可以工作,但最后一行失败(我已经使用引号和转义字符测试了不同的方法,但没有成功。
#!/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}"\""
Here, if i copy echo output and run it from command line - its working, but last line failed( I have tested different approaches with quotes and escape chars, but unsuccessfully.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不需要将反斜杠作为您正在构建的字符串的一部分(无论如何都用引号引起来),并且在调用 erl -eval 时不需要额外的双引号:
You don't need the backslashes to be part of the string you're building (it's all quoted anyway), and you don't need the extra double quotes when calling
erl -eval
: