在远程 ssh 命令中传递带引号的变量

Passing quoted variables in remote ssh command

我想通过 grep 查找几个文件中的一个字符串。在此示例中,我想为 "test 1234"

进行 grep
#!/bin/bash

variable="test 1234"
ssh root@server "grep "$variable" /path/*"

此脚本不起作用,因为测试 1234 被传递到服务器而不是 "test 1234"

我该如何解决这个问题?

您需要在命令中转义 $variable 周围的引号:

ssh root@server "grep \"$variable\" /path/*"

就目前而言,变量正在扩展,但由于引号未转义,命令正在文件 1234 和 [= 中搜索文本 test 20=]/path/*

您应该能够使用 \ 反斜杠字符转义双引号。

escape double quote in grep