Что вам не хватает, так это то, что синтаксис, используемый csh и t csh, далеко не такой общий и гибкий, как синтаксис, используемый bash и другими производными от Борна оболочками.
csh имеет специальный синтаксис для 1-строчных if
операторов:
if (condition) statement
, но для циклов ничего подобного не имеет:
% while (1) echo hello
while: Expression Syntax.
и это не позволяет передать вывод команды в al oop.
Если вы должны , используйте csh / t csh для некоторых По этой причине вы можете написать скрипт для инкапсуляции вашего while
l oop и направить вывод вашей команды в этот скрипт, или вы можете вызвать процесс sh
или bash
, чтобы выполнить работу за вас:
csh% bash -c 'ping 1.1.1.1 -O | while read pong; do echo "$(date): $pong"; done'
(я использую csh и t csh, как в интерактивном режиме, так и для сценариев, в течение ряда лет. Моим собственным решением было сначала начать использовать bash для сценариев, и затем полностью отказаться от t csh и использовать bash в качестве моей оболочки по умолчанию. Это что-то вроде кривой обучения, и есть некоторые t c sh функций, которые не так удобны в bash, но я рекомендую его.)
По закону я должен разместить эту ссылку:
https://web.mit.edu/ghudson/info/csh.whynot