从 echo 复制的作品,但不是从批处理文件复制的作品

发布于 2024-12-09 14:16:20 字数 336 浏览 0 评论 0原文

#!/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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梅倚清风 2024-12-16 14:16:20

您不需要将反斜杠作为您正在构建的字符串的一部分(无论如何都用引号引起来),并且在调用 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}"

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:

#!/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}"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文