SSHパイプを使用したエスケープ情報

SSHパイプを使用したエスケープ情報

次の長いパラメータを使用してawkコマンドを実行したいと思います。

ssh host "netstat -rn|awk 'NR!=1 && NF>=6 && $1!="Destination" {printf "%-15s %-20s\n", $1, $2}'|sort -f "

しかし、いくつかのエラーがあります。

構文エラーソースコード行は1です。エラー コンテキストは NR!=1 && NF>=6 && >>> != <<< awk: 終了ソース行は 1 です。

ではどうやって解決しますか?

答え1

すべての不快なサブシェル参照をバイパスするには、ここのドキュメントを使用してください。

ssh you@host <<-\SSH
    awk -f 3<<\AWK /dev/fd/3
        awk script
        as many lines as you like
        "$vars and quotes" are only evaluated by awk
    #END
    AWK
    "$vars and quotes" are only evaluated by remote shell
    echo 'single quotes and all'
    rest of ssh script
#END
SSH

答え2

バックスラッシュを使用して保護し、リモートコマンドに使用します$"

ssh host "netstat -rn|awk 'NR!=1 && NF>=6 && \$1!=\"Destination\" {printf \"%-15s %-20s\n\", \$1, \$2}'|sort -f "

関連情報