如何解决如何在c-shell中传递特殊字符作为参数
#!/bin/csh -f
set rule = $1
echo
echo $rule
当我以以下方式执行这个小脚本时:
<script1.csh> "test"
test
<script1.csh> "who?"
set:No match
我的问题是我该怎么做“?”作为c-shell中argumentsj的一部分? 非常感谢您的帮助 霍华德
解决方法
您必须添加引号:
#!/bin/csh -f
set rule = "$1"
echo
echo "$rule"
csh(以及Bourne shell)中变量的工作方式与常规编程语言并不完全相同,而更多地是作为“宏语言”使用的;也就是说,像$1
或$rule
这样的变量很容易被内容替换,而不是被解释为特殊变量。
因此set rule = $1
与输入set rule = who?
相同。为了避免出现问题,通常应该总是引用变量。
(确切的规则比上面描述的要复杂一些,但这是思考问题的有用方法)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。