【问题标题】:multi-line variable in tcshtcsh 中的多行变量
【发布时间】:2019-02-21 17:45:04
【问题描述】:

我想在 tcsh 中有一个变量来保存我的脚本的使用信息,所以在我的脚本中,每当我写 echo $usage 时,它​​都会打印出来

my_script
  -h : -help
  -b : do boo

等等。

有没有办法做到这一点?这可以使用

我尝试过类似的方法,但失败了:

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

谢谢

【问题讨论】:

    标签: csh tcsh


    【解决方案1】:
    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 shell 中,您可以这样做:

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

    但是 csh 和 tcsh 没有函数。)

    【讨论】:

      【解决方案2】:

      使用'' 会停止评估变量,这在您的情况下不是问题,但在其他情况下可能会出现。为了使其更具可读性并允许字符串分布在多行中,我使用以下内容:

      #!/bin/tcsh
      
      set help =      "my_script   \n" 
      set help = "$help  -h : -help\n"
      set help = "$help  -b : do boo"
      
      echo $help:q
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多