Можно выполнить команду на удаленном сервере, не входя в систему как это:
ssh -lUSERNAME SERVER COMMAND
например.
ssh -lsomeuser someserver 'mv .zshrc .zshrc.bak'
Команда, данная как последний аргумент ssh
будет выполняться неинтерактивной оболочкой и командами от .zshrc
только выполняются интерактивными оболочками (см. zsh
страница справочника, разделите на запуске и файлах завершения работы).
Солярис /usr/bin/awk
очень старый awk, который не поддерживает функции пользователя. Таким образом в этом awk, float(123)
совпадает с anything(123)
или anything 123
, это - конкатенация значения float
или anything
переменная (пустой, если не набор) и 123
. Так, это не ошибка, но это ничего не делает.
Вы записали
echo "Foampile=123" | awk -F '=' '{float="x"; print float($2) "<->" $1}'
Вы видели бы
x123<->Foampile
Я не думаю, что существует любая awk реализация, которая имеет a float
функция.
Что Вы ожидали бы что функция делать так или иначе?
С другой стороны, современный POSIX awks как Солярис /usr/xpg4/bin/awk
или nawk
или gawk
действительно поддерживайте функции пользователя, таким образом, в тех, если Вы не определяете float
или anything
функция, Вы будете видеть ту ошибку.
echo "Foampile=123" | awk -F '=' '{ print $2 "<->" $1 }'
работал бы точно то же (и будет работать с современным awks).
В современном awks, для устранения неоднозначности между вызовом функции и конкатенацией переменной и чего-то в фигурной скобке необходимо добавить по крайней мере одно дополнительное пространство:
$ echo x | awk '{print foo ($1)}'
x
$ echo x | awk 'function foo(x) {return "y"}; {print foo($1)}'
y
Я думаю, что это - Солярис определенная функция. Вы, возможно, должны были бы вместо этого использовать printf или sprintf и указать плавание.
awk 'BEGIN {printf "%1##f\n", "<->" $1}
float
и такой использовались. Надежда это имеет смысл. – amphibient 26.11.2012, 23:09