У меня была та же проблема, оказалось, что я использовал флешку. Удалось попробовать на другой флешке, все заработало. Надеюсь поможет.
В вашем одном -лайнере $1
находится в строке с двойными кавычками:
"cat <(date|awk '{print $1}')"
Это означает, что он будет расширен интерактивной оболочкой. Если первый позиционный параметр $1
пуст, он расширит его до пустой строки, в результате чего программа awk
просто выведет ввод :
awk '{print }'
Экранируйте $
в $1
как \$1
, чтобы остановить попытку оболочки расширить его. Ваша полная команда будет выглядеть как
bash -c "cat <(date|awk '{print \$1}')"
В вашем варианте скрипта $1
находится в строке с одинарными кавычками. Поэтому оболочка не будет пытаться расширить его.
Однако в этом конкретном случае было бы лучше использовать только
date +%a
для печати сокращенного названия дня. См. также руководство strftime(3)
(man 3 strftime
).
В более новых bash
версиях (выпуск 4.2+, т.е. не с по умолчаниюbash
в macOS, а с установленным, например, через. Самодельный ),
printf '%(%a)T\n' -1
сделал бы то же самое, не вызывая никаких внешних команд.