`tcsh` повторить с подоболочкой

Я пытаюсь понять, как повторять сложную команду внутри повтора в tcsh , например

 repeat 9999 (curl http://localhost:80/index.php; echo) 

Я использую subhell здесь вместо { и } потому что, согласно http://hyperpolyglot.org/unix-shells , tcsh не имеет этой функции.

Тем не менее, я получаю следующую непредвиденную ошибку из предыдущей конструкции.

 Badly placed ()'s 

Итак, как вы повторяете сложную команду с tcsh ?

Есть несколько старых rants там о странных несоответствиях csh и, кстати, tcsh , например, этот http://www.grymoire.com/unix/CshTop10.txt . Поэтому я не уверен, что думать об этой ошибке.

4 Solutions collect form web for “`tcsh` повторить с подоболочкой”

Из tcsh(1) :

 repeat count command The specified command, which is subject to the same restric‐ tions as the command in the one line if statement above, is executed count times. [..] 

И из документации if :

 if (expr) command [..] command must be a simple command, not an alias, a pipeline, a command list or a parenthesized command list, but it may have arguments. [..] 

Похоже, это не то, что вы можете сделать.

Чтобы обойти это, вы можете использовать простой сценарий оболочки.

Другим обходным решением будет использование ZSH.

 % repeat 3 (echo hi; echo there) hi there hi there hi there % 

Поскольку repeat – встроенная команда, но не часть синтаксиса, вы не можете легко использовать () s в списке аргументов.

Даже с Bourne Shell которая менее ограничена, чем tcsh

 repeat -c 3 (echo a) 

не будет работать.

Что работает:

 (repeat -c 10 echo a) 

так как это выполняет всю команду в подоболочке. Но даже:

 (repeat -c 3 echo a; echo b) 

повторит echo a три раза, но просто вызовет echo b один раз ..

Однако:

 repeat -c 3 "echo a" 

рекомендуется, если вам нравится повторять более сложную команду с помощью встроенного repeat . Это работает даже для менее простых команд, потому что repeat ведет себя аналогично eval .

Я думаю, вы можете использовать для этого «eval», например:

 repeat 7 eval "cmd1;cmd2" 
  • Почему «kill -l» дает разные результаты в рыбе и bash
  • Как создать правило для замены пользовательского флага с помощью оболочки C?
  • Извлечь данные из текстового файла с помощью grep
  • tcsh alias - найти порт FreeBSD
  • запуск рыбной раковины на новый терминал tcsh on centos
  • Несогласованность перенаправления stderr между tcsh и другими оболочками
  • создание псевдонима для cmd с backticks
  • Почему мой $ PATH не наследуется вызванным bash?
  • проблемы с запуском tcsh-файла
  • Как предотвратить удаленный вход ssh из-за нарушения dbus?
  • Если вы измените переменную среды в другой оболочке, она изменится или останется неизменной в других оболочках?
  • Linux и Unix - лучшая ОС в мире.