这个守护进程有,例如。一个脚本中有5种类型。现在,我希望能够通过指定守护程序的编号(逐个启动)来启动/停止它,或者指定" all" (以批量开始)。
格式:(运行脚本)(commandName)(守护程序#或"所有")
当用户输入时,需要满足两个条件:
(1)正确(通过数字或"全部)或
(2)错误(输入的num大于$ count或所有其他字符串而不是" all")。
如果用户输入其他字符串而不是" all"
示例代码:
case 'startDaemon': #commandName
set count = 5
if ($#argv == 2 && $2 == all) then
echo "correct, do this"
else if ($#argv == 2 && $2 < $count) then
echo "correct too, do this"
else if ($#argv == 2 && ($2 != all || $2 >= $count)) then
echo "Incorrect parameter: specify daemon # less than $count or 'all' to start all."
else
echo "Please use: $0(runscript) $1(commandname) (daemon # or all)"
每当我输入: (runscript)startDaemon hello ,例如,错误显示:
if: Expression syntax
什么时候应该进入第3个条件。如果问题是在条件或逻辑运算符或其他方面,请帮助并善意指出。提前致谢
PS。我正在使用 csh 。给我的剧本是在csh中,所以是的。
答案 0 :(得分:0)
当前问题是比较$2 < $count
,当$count
包含字符串时,该比较无效。
这是一个有效的解决方案:
#!/bin/csh
set count = 5
if ($#argv == 2) then
if ($2 == all) then
echo "correct, do this"
else if (`echo $2 | grep '^[0-9]*$'`) then
if ($2 < $count) then
echo "correct too, do this"
else
echo "Number must be less than 5"
endif
else
echo "Incorrect parameter: specify daemon # less than $count or 'all' to start all."
endif
else
echo "Please use: $0(runscript) $1(commandname) (daemon # or all)"
endif