我在从 shell 脚本中执行的命令中使用单引号时遇到问题。 在我的脚本中,我执行一个 rdesktop 命令,该命令应以 -u '' (<- 2 个单引号)作为参数。 但是,无论我如何尝试转义引号,它都无法正确传递。
如果我只是 echo $command 输出就很好,如果我执行它就会创建奇怪的输出
这是脚本中不起作用的部分:
command="rdesktop -u "\'\'" $server"
`$command`
我也尝试直接执行它:
`rdesktop -u "\'\'" $server`
如果我能得到任何帮助,我将不胜感激,因为我读了很多有关在 shell 脚本中转义字符的教程,但没有找到解决方案。
编辑:
有趣的是,如果我只是使用
command=rdesktop -u '' $server
并回显它,输出很好 但是,如果我用
执行它$command
失败了...
最佳答案
如果您的 shell 是 bash、ksh 或 zsh,则使用数组而不是字符串构建命令要安全且容易得多:
command=( rdesktop -u '' $server )
然后像这样执行
"${command[@]}"
我无法想象远程服务器需要看到一个字面上名为 ''
的用户名(即 2 个单引号)——它可能只需要一个空字符串。
关于shell脚本: single quote in execute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10732082/