shell脚本: single quote in execute

标签 shell escaping shellexecute

我在从 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/

相关文章:

string - 在 Bash 中从末尾提取子字符串

php - shell - 代码是正确的,但不起作用

Python 得到错误的 UTF-8 字符编码?

java - FitNesse 中类路径 (!path) 元素中的空白的正确转义或引用是什么?

PHP 的 stripslashes 的 Python 版本

mysql - 如何从 MySQL 运行程序?

linux - 如何压缩有大小限制的文件?

c++ - 为什么我们需要用 ShellExecute 传递 LPCTSTR lpParameters

php - shell_exec 不在后台运行,还有其他解决方案吗?

shell - 在 shell 中使用 'list variables' 。如何为列表中的所有元素添加前缀?