【问题标题】:how to pass a special character as argument in c-shell如何在c-shell中将特殊字符作为参数传递
【发布时间】:2020-10-05 21:48:19
【问题描述】:
#!/bin/csh -f
set rule = $1
echo 
echo $rule

当我执行这个小脚本时:

<script1.csh> "test"
test

<script1.csh> "who?"
set:No match

我的问题是如何制作“?”作为c-shell中参数j的一部分? 非常感谢您的帮助 霍华德

【问题讨论】:

  • 尝试"who\?"(您可能需要更多"\" char)。还将您的脚本更改为set rule = "$1"。祝你好运。

标签: csh


【解决方案1】:

您必须添加引号:

#!/bin/csh -f
set rule = "$1"
echo
echo "$rule"

csh(以及 Bourne shell)中变量的工作方式与常规编程语言并不完全相同,而更像是一种“宏语言”;也就是说,像$1$rule 这样的变量被简单地替换为内容,而不是解释为特殊变量。

所以set rule = $1 与您输入set rule = who? 相同。为避免出现问题,您通常应该始终引用变量。

(确切的规则比上面描述的要复杂一些,但这是一种有用的思考方式)。

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 2020-04-05
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2013-06-24
    相关资源
    最近更新 更多