Какое использование для << перенаправления в оболочке TCSH
Я понимаю <
перенаправление ввода и два >
/ >>
перенаправления вывода (двойное добавление содержимого в файл). Но я не понимаю <<
двойное перенаправление ввода.
Например echo "cat < input | wc > output" | tcsh
создайте этот выходной файл: 2 2 11
но с echo "cat << input | wc > output" | tcsh
это производит этот выходной файл: 0 0 0
,
Что значит <<
делать? Кажется, что он не отправляет данные в wc stdin, но почему?
1 ответ
В csh, как и в оболочках семейства POSIX, <<
запускает heredoc, то есть многострочную строку, оканчивающуюся строкой, содержащей сразу после него только слово. Таким образом, в следующем примере:
cat << input | wc > output
this is test data here
input
this is test data here
подается как стандартный cat
стандартный вывод которого подается как стандартный wc
, (Кстати, нет никакого смысла использовать cat
Вот; ты мог бы просто wc <<input >output
с тем же эффектом и со значительно меньшей неэффективностью).