使用 ssh 在远程计算机上运行命令时使用引号

使用 ssh 在远程计算机上运行命令时使用引号

我有一个命令,我知道当我远程访问一台机器并运行它时,它可以正常工作。命令如下:

grep "SearchTerm        $1" file.txt | sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr

但是,当我尝试使用 在我的本地计算机上运行该命令时ssh,它不再起作用。我认为这是因为我使用了引号,但我不确定该如何修复它。有什么建议吗?

ssh username@hostname 'grep "SearchTerm        $1" file.txt | sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr'

答案1

$1 是脚本的第一个参数,而您在上面的例子中没有向它传递参数。您可以通过制作 file_count.sh 脚本来实现这一点:

#!/bin/sh
ssh user@host "grep \"SearchTerm        $1\" file.txt \
| sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr"

或者另一个想法是创建一个 bash 别名(或与你的 shell 等效的别名):

bash$ search_count() { ssh user@host "grep \"SearchTerm        $1\" file.txt \
| sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr"; }

bash$ search_count wally
      5 SearchTerm        wally

相关内容