回答:
変数の補間は二重引用符内で実行されるので、ここで私が考えていることは次のとおりです。と入力するssh $HOST "ls -l | awk '{print $1}'"
と、シェル(SSHクライアントを実行しているローカルコンピューター上のシェル)が$1
二重引用符内に表示され、それが変数の値$1
。これは空白になります。$1
が二重引用符内の単一引用符内にネストされていることを検出できません。したがって、リモートサーバーに送信されることになるのは
ls -l | awk '{print }'
基本的には
ls -l | cat
つまり、の出力を出力するだけですls -l
。
解決策:$
バックスラッシュでエスケープします。
ssh $HOST "ls -l | awk '{print \$1}'"