运行 shell 通过 ssh 嵌套引号的命令
Running shell command that has nested quotes via ssh
我有以下 shell 命令:
ssh user@host "df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split(, a, "%"); \
var="GREEN"; print , , var}' | column -t"
我需要通过 ssh 运行 这个,但是由于存在嵌套的双引号和单引号,我收到语法错误。
我在引号的开头和结尾之前尝试了转义字符,但没有解决问题。
但是,在本地系统 运行ning 上,这将给出以下输出:
$ df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split(, a, "%"); \
var="GREEN"; print , , var}' | column -t
DISK %USAGE STATUS
/dev/sda1 95% GREEN
引用的 heredoc 允许您省略外部引号:
ssh user@host <<'END'
df | grep /dev/ | awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split(, a, "%"); var="GREEN"; print , , var}' | column -t
END
这种情况下这里的文档就派上用场了:
ssh -t -t user@host<<'EOF'
df | awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} /dev/{split(, a, "%"); var="GREEN"; print , , var}' | column -t
EOF
只需远程 运行 df | grep
并使用 awk
:
在本地处理输出就简单多了
ssh user@host 'df | grep /dev' | awk '
BEGIN{print "DISK", "%USAGE", "STATUS"}
{split(, a, "%"); var="GREEN"; print , , var}' | column -t
我有以下 shell 命令:
ssh user@host "df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split(, a, "%"); \
var="GREEN"; print , , var}' | column -t"
我需要通过 ssh 运行 这个,但是由于存在嵌套的双引号和单引号,我收到语法错误。
我在引号的开头和结尾之前尝试了转义字符,但没有解决问题。
但是,在本地系统 运行ning 上,这将给出以下输出:
$ df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split(, a, "%"); \
var="GREEN"; print , , var}' | column -t
DISK %USAGE STATUS
/dev/sda1 95% GREEN
引用的 heredoc 允许您省略外部引号:
ssh user@host <<'END'
df | grep /dev/ | awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split(, a, "%"); var="GREEN"; print , , var}' | column -t
END
这种情况下这里的文档就派上用场了:
ssh -t -t user@host<<'EOF'
df | awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} /dev/{split(, a, "%"); var="GREEN"; print , , var}' | column -t
EOF
只需远程 运行 df | grep
并使用 awk
:
ssh user@host 'df | grep /dev' | awk '
BEGIN{print "DISK", "%USAGE", "STATUS"}
{split(, a, "%"); var="GREEN"; print , , var}' | column -t