gpt4 book ai didi

linux - 通过 bash 和 ssh 逐字传递引号和其他特殊字符

转载 作者:IT王子 更新时间:2023-10-29 01:15:30 25 4
gpt4 key购买 nike

我正在尝试运行一个 SSH 命令,该命令将调用远程计算机上的一个脚本,该脚本将一些 Lua 代码写入一个文件。

我有这个在 bash 下执行的脚本命令:

ssh bob writelua.sh '{version=1,{["foo"]=17}}'

writelua.sh 看起来像这样:

echo "return $1" > bar.lua

然而,最终结果是 bar.lua 具有以下内容:

return version=1

我原以为单引号会阻止所有解释。我如何编辑脚本并转义以安全地传递原始 Lua 代码?

最佳答案

单引号防止在本地 主机上进行解释。远程主机看到命令行

writelua.sh {version=1,{["foo"]=17}}

受大括号扩展的影响。您需要第二组引号,以便将第一组单引号传递到远程主机。

ssh bob writelua.sh "'{version=1,{[\"foo\"]=17}}'"

如您所见,引号开始变得笨拙。更好的解决方案是简单地复制一个包含

的脚本
writelua.sh '{version=1,{["foo"]=17}}'

到远程主机并远程执行。


使用 $'...' 引号的示例:

ssh bob writelua.sh $'{version=1,{[\'foo\']=17}}'

关于linux - 通过 bash 和 ssh 逐字传递引号和其他特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com