我目前正在csh中编写脚本,我的脚本必须采用-f
命令行选项,所以我的脚本看起来像这样:
checker -f
这会做我想要它做的事情。
如何检查用户是否放置了-f
命令行选项?
if($1 == "-f") then
do something
endif
上面给出了错误说“if:Missing file name”。我很确定我会检查用户是否正在使用命令行选项 - 但我应该怎么做?
答案 0 :(得分:1)
您必须将$1
括在双引号"
中才能实现此目的:
#!/bin/csh
if ("$1" == "-f") then
echo RIGHT FLAG
else
echo WRONG OR NO FLAG
endif
产生:
% ./c.sh -f
RIGHT FLAG
% ./c.sh -z
WRONG OR NO FLAG
% ./c.sh
WRONG OR NO FLAG
另一种实现相同目的的方法是在 {/ 1}}的两个部分之前添加虚拟角色,如b
或其他任何内容。表达式,像这样:
==
这种情况发生的原因与某些看似无关的因素的相当神秘的组合有关:
if (b$1 == b-f) then
f
被评估为if($1 == "-f")
。if (-f == -f)
这样的表达一起使用时,-f
是csh
文件查询方案的一部分。上述组合被if ( == )
解释为尝试在名为字面csh
的文件上使用-f
运算符,当然,该文件不存在,因此“if :缺少文件名“。
以下是csh的文件查询开关列表:
==
如果您选择了此列表中没有的任何字母,您就不会遇到问题:
r, w, x, e, o, z, f, d
结果:
if($1 == "-a") then
echo OK
endif