Я обнаружил, что пробел кажется значительным в командах ZFS, но видимо только при некоторых условиях. Например, работают обе следующие команды:
root@grandidier:~# zfs list -t snap -r tank/srv
NAME USED AVAIL REFER MOUNTPOINT
tank/srv@initial 4.22G - 2.45T -
tank/srv@2018-01-09 106G - 3.40T -
tank/srv@2018-01-14 50.0M - 3.27T -
tank/srv@2018-01-17 48.8M - 3.16T -
tank/srv@2018-01-19 56.9M - 3.09T -
tank/srv@2018-01-30 48.6M - 2.72T -
tank/srv@2018-02-12 104M - 2.49T -
root@grandidier:~# zfs list -t snap -r tank/srv
NAME USED AVAIL REFER MOUNTPOINT
tank/srv@initial 4.22G - 2.45T -
tank/srv@2018-01-09 106G - 3.40T -
tank/srv@2018-01-14 50.0M - 3.27T -
tank/srv@2018-01-17 48.8M - 3.16T -
tank/srv@2018-01-19 56.9M - 3.09T -
tank/srv@2018-01-30 48.6M - 2.72T -
tank/srv@2018-02-12 104M - 2.49T -
root@grandidier:~#
(Примечание: добавлено пространство между «... snap -r») Однако, если я помещаю команду в трубку и использую обратную тиковую замену, чтобы получить результат команды, я получаю:
root@grandidier:~# export NEW=`zfs list -t snap -r tank/srv | tail -1 | awk '{print $1}'`; echo $NEW
tank/srv@2018-02-12
root@grandidier:~# export NEW=`zfs list -t snap -r tank/srv | tail -1 | awk '{print $1}'`; echo $NEW
cannot open ' -r': invalid dataset name
cannot open 'tank/srv': operation not applicable to datasets of this type
root@grandidier:~#
Я нахожу это непонятным и обескураживает. Я думаю, что я могу обойти эту проблему, создав свои сценарии без лишнего пробела, но мне очень хотелось бы знать, почему это происходит в первую очередь.
Это на Ubuntu 16.04 LTS (актуально ) bash 4.3.48 ZFS 0.6.5.11-1ubuntu3
Изменить: ответить на первые три комментария (и сохранить форматирование кода)
root@grandidier:~/bin# printf '%q\n' "$IFS"
$' \t\n'
Кажется, что $ (.. .) Синтаксис также подпадает под эту проблему (см. следующий комментарий.)
Я не уверен, что может возникнуть нечто похожее на пространство, но похоже, что это проблема. Я скопировал эту строку в / из документа Google и, возможно, сделал какой-то перевод на пробелы. Если я добавлю дополнительное пространство в документ google и скопирую / вставлю в xterm, сообщается об ошибке. Если я отредактирую команду (в командной строке) и удаляю / вставляю два пробела, команда работает без ошибок.
Очевидно, что Документы Google не являются хорошим редактором программ. (Я на самом деле не использую его таким образом, а скорее делаю заметки и сохраняю копии команд, когда я прорабатываю что-то. Я, вероятно, должен придерживаться чего-то вроде vim.)