在远程 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
我想通过 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