Это невозможно в текущей версии upstrem openssh
. Но я работал над патчем, который обеспечивал бы эту функциональность как для клиента, так и для сервера.
В настоящее время он доступен для Fedora из репозитория copr . Патчи отслеживаются в вышестоящей версии bugzilla как ошибки # 1585 и # 2468 , и я буду рад некоторым отзывам и тестированию.
Обновление: Ошибка # 1585 была обновлена, но разработчиком openssh, поэтому мы можем ожидать некоторого прогресса в ближайшем будущем.
Подстановка параметров так не работает, по крайней мере, в bash. Вам нужна реальная переменная (параметр )и непосредственно работать с ней. Так например вот так:
var=$(echo abcdefgh | cmd1 | cmd2 |... )
var2="${var:2:4}"
Исключение составляет zsh
, где вы можете преобразовать подстановку команды в параметр "на лету" и сделать выше в одной строке:
var2=${"$(echo abcdefgh | cdm1 | cmd2 |... )":2:4}
Обратите внимание, что:
echo $greeting | md5sum
Или точнее:
printf '%s\n' "$greeting" | md5sum
Выдает не хэш MD5 содержимого переменной, а содержимое переменной, за которым следует символ новой строки. Для хэша MD5 содержимого переменной:
printf %s "$greeting" | md5sum
Для первых 6 байтов, с некоторыми head
реализациями:
printf %s "$greeting" | md5sum | head -c 6
или более портативный:
printf %s "$greeting" | md5sum | dd bs=1 count=6 2> /dev/null