Я могу только предложить, Вы используете rsync
. Это - своего рода промышленный стандарт, когда движущиеся файлы по безопасным соединениям.
rsync -alPvz ./source_dir server.com:destination_dir
Это - то, что я использовал в течение многих лет к настоящему времени.
( -a
опция заботится о вещах как рекурсия каталога),
Вы не должны использовать $
- знак перед some
. То, что происходит, то, что с Вашей первой командой $2
печатается и затем $some=$2
переводит в $0=$2
с тех пор some
unitialized (в некоторых awk
реализации some
преобразовывается из ""
кому: 0
, не все (затем Вы получаете сообщение об ошибке)), таким образом, Вы заменяете запись ($0
) с $2
. Затем Вы печатаете $some
, что означает $0
Таким образом, это идентично
df|awk '{print $2; $0=$2; print $0}'
и
df|awk '{$0=$2; print $0}'
То, что Вы, вероятно, означали делать, было:
df|awk '{print $2; some=$2; print some}'
Я получаю ожидаемый результат. Первая команда печатает каждый объект дважды. Вторая команда печатает его однажды.
Это является довольно нетрадиционным - у "некоторых" будет значение нуля по умолчанию, так как это не определено. $some - поэтому 0$, который представляет всю строку, так в основном Вы заменяете строку тем, что Вы находите в 2$, когда Вы используете $some=$2
Сравните его с этим результатом:
johan@computer:~$ df|awk '{$some=$2; print}'
1K-blocks
30827524
4041028
1621692
5120
4054228
102400
4054228
60555340
209548784
Почему был бы Вы не получать вывод или другой результат: Я ожидаю, что поведение использования непосвященных переменных будет потенциально не определено, по крайней мере, в некоторых системах.
На Солярисе у меня есть доступ к "стандарту" awk, а также, предположительно, POSIX совместимая версия, установленная в/usr/xpg4/bin/awk. Оба из них приводят к тому же результату для следующего
Они приводят к переменным результатам в зависимости от того, добавляю ли я печать "привет" впереди или нет, и в зависимости от того, заменяю ли я последнюю команду "печатью" (в земельном участке $some печати) или нет.
Все они печатают ЧТО-ТО, не пробелы, хотя - мне не удалось найти версию, которая воспроизводит тот эффект.
Таким образом, я ожидаю, что это будет некоторым неопределенным поведением из-за использования неинициализированной переменной - Вы присваиваете значение столбцу, который потенциально далеко проходит конец возможного диапазона столбцов во входном потоке. $some обращается к столбцу, определенному значением "некоторых"
Необходимо просто использовать "некоторых" в качестве переменной, например,
df | awk '{print "hello";some=$2; print some}'
Я думаю причина, это произошло, то, потому что Ubuntu не использует стандартную имплантацию GNU, но что-то еще известное как mawk, который взламывает много кода, который работал под стандартным Unix.
См. эту ссылку для подобного обсуждения.
awk: program limit exceeded: maximum number of fields size=32767
– Aditya Patawari 08.03.2013, 13:35df|awk '{print $2; some=$2; print $some}'
который попытался бы создать поле 38 448 788$ с Вашим демонстрационным входом. – Scrutinizer 08.03.2013, 13:36