我编写了一个运行crontab - l
命令
为了使它更容易使用,我还让用户能够将命令行参数传递给脚本,这将作为grep命令的模式输入,以便用户可以过滤掉所有的东西他/她不需要看。
这是脚本: -
1 #!/bin/bash
2 if [[ $1 == "" ]]; then
3 echo -e "No Argument passed:- Showing default crontab\n"
4 command=$(crontab -l 2>&1)
5 echo "$command"
6 else
7 rc=$?
8 command=$(crontab -l | grep -- "$1" 2>&1)
9 echo "$command"
10 if [[ $rc != 0 ]] ; then
11 echo -e "grep command on crontab -l was not successful"
12 fi
13 fi
这是我如何运行它
$ ./DisplayCrontab.sh
现在如果我没有传递任何命令行参数,它将显示完整的crontab
如果我传递了crontab中不存在的任何垃圾模式,它将显示以下消息: -
grep command on crontab -l was not successful
但即使我传递了一个在crontab中存在几行的模式,我也得到了这种输出: -
#matching lines
#matching lines
#matching lines
grep command on crontab -l was not successful
为什么我的grep命令在底部没有成功?我怎么能摆脱它?
脚本有什么问题吗?
答案 0 :(得分:2)
您在执行前捕获退出代码,应该是:
command=$(crontab -l | grep -- "$1" 2>&1)
rc=$?
要测试此代码,请使用数字运算符:
[[ $rc -ne 0 ]]
Grep man:
通常,如果找到选定行,则退出状态为0 否则为1。但如果发生错误,退出状态为2