Bash 直接调用shell脚本并执行它的行为有什么不同?

Bash 直接调用shell脚本并执行它的行为有什么不同?,bash,shell,Bash,Shell,我有一个shell变量中脚本的文件路径,如果直接运行它,它可以正常运行(路径中有一个用\转义的空格,\后面有一个空格),但是当我尝试通过 exec $script "$@" 脚本路径中的空白将成为问题,并中断脚本路径。我怎样才能解决这个问题?(我无法更改包含空格的给定路径)不要在变量中添加反斜杠。引用它的扩展 script="is/already a/string" exec "$script" "$@" 不要在变量中加反斜杠。引用它的扩展 script="is/already a/stri

我有一个shell变量中脚本的文件路径,如果直接运行它,它可以正常运行(路径中有一个用
\
转义的空格,
\
后面有一个空格),但是当我尝试通过

exec $script "$@"

脚本路径中的空白将成为问题,并中断脚本路径。我怎样才能解决这个问题?(我无法更改包含空格的给定路径)

不要在变量中添加反斜杠。引用它的扩展

script="is/already a/string"
exec "$script" "$@"

不要在变量中加反斜杠。引用它的扩展

script="is/already a/string"
exec "$script" "$@"

请尝试:
exec“$script”“$@”
谢谢,但是
script=“is/ready\a/string”
,这不应该涵盖它吗?您可以添加一个完整的、可复制的示例吗?包括
$script
的定义?展开变量时不处理反斜杠。唯一完成的处理是分词和全局处理;因此,将转义符放在变量的值中并不能达到预期效果,因为当它们成为命令的一部分时,已经太晚了,无法达到预期效果。请尝试:
exec“$script”“$@”
谢谢,但是
script=“is/ready\a/string”
,这不应该涵盖它吗?您可以添加一个完整的、可复制的示例吗?包括
$script
的定义?展开变量时不处理反斜杠。唯一完成的处理是分词和全局处理;因此,将转义符放在变量的值中并不能达到预期效果,因为当它们成为命令的一部分时,已经太晚了,无法达到预期效果。