многострочная переменная в tcsh - PullRequest
5 голосов
/ 05 сентября 2011

Я хочу иметь переменную в tcsh для хранения информации об использовании моего скрипта, поэтому в моем скрипте всякий раз, когда я пишу echo $ использовании, он будет печатать

my_script
  -h : -help
  -b : do boo

и т. Д.

Есть ли способ сделать это?Можно ли это сделать с помощью << EOF? </p>

Я пробовал что-то подобное, но не получилось:

set help =  << EOF
     my_script 
       -h : print help
       -b : do boo
EOF

спасибо

Ответы [ 2 ]

8 голосов
/ 05 сентября 2011
set help = 'my_script\
  -h : -help\
  -b : do boo'

echo $help:q

Другой подход:

alias help 'echo "my_script" ; echo "  -h : -help" ; echo "  -b : do boo"'

help

Но см. Также: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

Я использую csh и tcsh больше лет, чем хочу признать, но япришлось прибегнуть к методу проб и ошибок, чтобы выяснить первое решение.Например, echo "$help" не работает;Я не знаю почему, и я сомневаюсь, что смогу выяснить это из документации.

(В оболочке Bourne вы могли бы сделать это так:

help() {
    cat <<EOF
my_script
  -h : -help
  -b : do boo
EOF
}

help

но csh иУ tcsh нет функций.)

0 голосов
/ 10 июня 2014

Использование '' останавливает оценку переменных, в вашем случае это не проблема, но может быть и в других ситуациях.Чтобы сделать его немного более читаемым и разрешить разброс строки на несколько строк, я использую следующее:

#!/bin/tcsh

set help =      "my_script   \n" 
set help = "$help  -h : -help\n"
set help = "$help  -b : do boo"

echo $help:q
...