csh - 如何在c-shell中将特殊字符作为参数传递
问题描述
#!/bin/csh -f
set rule = $1
echo
echo $rule
当我执行这个小脚本时:
<script1.csh> "test"
test
<script1.csh> "who?"
set:No match
我的问题是如何制作“?” 作为c-shell中参数j的一部分?非常感谢您的帮助霍华德
解决方案
您必须添加引号:
#!/bin/csh -f
set rule = "$1"
echo
echo "$rule"
csh(以及 Bourne shell)中变量的工作方式与常规编程语言并不完全相同,而更像是一种“宏语言”;也就是说,一个类似于$1
or的变量$rule
被简单地替换为内容,而不是解释为一个特殊的变量。
所以set rule = $1
就像你输入了一样set rule = who?
。为避免出现问题,您通常应始终引用变量。
(确切的规则比上面描述的要复杂一些,但这是一种有用的思考方式)。
推荐阅读
- excel - 使用 VBA 复制工作簿和过滤
- angular - 如何访问 Angular 中的管道结果以在不同的元素中使用?
- java - 使用 Querydsl 进行过滤操作
- arrays - Excel数组公式 - 以动态高度管理表格中的数据
- java - 如何在 spark java 实现中创建具有其他 Rdd 元素的所有可能组合的 New Rdd?
- javascript - 预期名称,找到!通过变量传递动态时的Graphql
- javascript - 浏览器调整大小时保持 div 可见
- python - Python:如何根据其他列的条件选择熊猫行?
- machine-learning - 逻辑回归只预测一类
- cypress - 赛普拉斯:如何在 google chrome://settings 自动填充中添加付款方式和地址