Эй все, у меня есть эта проблема, где у меня есть пример программы в csh (я знаю, что не лучший язык использует для сценариев, но у меня нет опции здесь), как foll:
#!/bin/csh
echo 'please enter values'
read a
read -e b
echo "My values are $a and $b"
Поскольку Вы могли бы видеть, что мое второе чтение собирается взять вход файла. Это необходимо, поскольку моя фактическая программа будет иметь это; теперь то, что я хочу сделать, должно преобразовать это для искажения однако, когда я выполняю вышеупомянутый сценарий, я получаю вывод foll.
please enter values
read: Command not found
read: Command not found
a: Undefined variable
Как я могу зафиксировать это, и также я хочу преобразовать это все 4 строки в многострочный псевдоним. Я записал однострочный псевдоним в прошлом без проблем, но не уверенный в мультилинии. если кто-то может выручить, я буду действительно благодарен
Поскольку Вы обнаружили, оболочка C не имеет встроенного read
функционируйте подобные той из оболочек типа Границы.
Я не являюсь опытным в csh
synatax, но насколько я знаю, ближайшая альтернатива, должен использовать специальную переменную $<
. От man csh
:
$< Substitutes a line from the standard input, with no further interpretation. It can be used to read from the keyboard in a shell script.
например.
$ cat myscript.csh
#!/bin/csh
echo 'please enter values'
set a = $<
set b = $<
echo "My values are $a and $b"
который дает
$ ./myscript.csh
please enter values
123
abc
My values are 123 and abc
Обратите внимание, что существуют зависящие от реализации различия в как присвоения от $<
обрабатывает вход многословный - в частности, Tenex tcsh
не заключает вход в кавычки по умолчанию, вместо этого требуя $<:q
получить то же поведение как BSD csh
. Также существует (насколько я знаю), никакой встроенный readline, редактирующий поддержку, эквивалентную оболочке удара read -e
.
Что касается многострочных псевдонимов, они, действительно кажется, работают:
% alias jo '\
echo "please enter values "\
set a = $< \
set b = $< \
echo "My values are $a and $b"'
%
% alias
jo
echo "please enter values "
set a = $<
set b = $<
echo "My values are $a and $b"
Тестирование его
% jo
% please enter values
123
foo bar
My values are 123 and foo bar
%
однако это не функция, на которую я рекомендовал бы полагаться.