После (Powershell: Правильно избегать апострофов) я до сих пор не понял, как правильно сделать эти побеги при выполнении команды над plink, исходящей от powershell.
То, что я пытаюсь выполнить на хосте Linux, это
df -k / | tail -1 | awk '{print $4}'
Это просто дает мне количество свободных КБ в /
.
Поскольку я нахожусь в своем PowerShell (Windows), мне нужно собрать команду plink
чтобы получить команду на сервер. Наивно это выглядит так:
& plink -ssh -l $user -batch -pw $pw $user@$IP df -k / | tail -1 | awk '{print $4}'
Это не удается, потому что PowerShell подключается к |
и ищет командный tail
. Итак, я должен сбежать из труб вот так:
& plink -ssh -l $user -batch -pw $pw $user@$IP df -k / `| tail -1 `| awk '{print $4}'
Это дает мне awk: cmd. line:1: Unexpected end of string
.
Я думаю, мне нужно дважды избегать $4
, потому что PowerShell и Linux Bash пытаются заменить его переменной. Но как я могу это сделать?
С помощью
\`$4
не меняет сообщение.