Пожалуйста, почему "эхо" инструкция:

iphost="$(ssh root@$machine -x "host $machine | awk '/has address/ { print $4 }'")"
echo $iphost

дисплей:

g-3.xx.yyy.zz has address 172.16.65.35

вместо:

172.16.65.35

?

Большое спасибо за помощь.

С уважением.

2 ответа2

1

Вы должны использовать escape-последовательность обратной косой черты (\) внутри команды awk, как показано ниже. Поскольку вы используете команду в двойных кавычках, переменные будут разрешены перед выполнением. Поэтому он будет пытаться понять $ 4 как системную переменную и попытаться разрешить ее. Если вы используете обратную косую черту escape-последовательности, она сохранит $ 4 для команды awk.

iphost="$(ssh root@$machine -x "host $machine | awk '/has address/ { print \$4 }'")"
echo $iphost
0

Попробуйте это в ~/.bashrc или подобном

export iphost="$(echo $SSH_CLIENT | awk '{print $1}')"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .