Shell 不匹配模式的grep命令退出代码
我已经编写了一个运行Shell 不匹配模式的grep命令退出代码,shell,grep,exit-code,Shell,Grep,Exit Code,我已经编写了一个运行crontab-l命令的shell脚本 为了使它更易于使用,我还为用户提供了将命令行参数传递给脚本的功能,该脚本将充当grep命令的模式输入,以便用户可以过滤掉所有他/她不需要看到的内容 以下是脚本:- 1 #!/bin/bash 2 if [[ $1 == "" ]]; then 3 echo -e "No Argument passed:- Showing default crontab\n" 4 command=$(cro
crontab-l
命令的shell脚本
为了使它更易于使用,我还为用户提供了将命令行参数传递给脚本的功能,该脚本将充当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命令在底层不成功?我如何才能摆脱它
脚本有什么问题吗?您在执行之前捕获的退出代码应该是:
command=$(crontab -l | grep -- "$1" 2>&1)
rc=$?
要测试此代码,请使用数字运算符:
[[ $rc -ne 0 ]]
格雷普·曼:
正常情况下,如果找到选定的行并且
1否则。但如果发生错误,退出状态为2
哦,这段时间我一直在想,当我做
echo“$command”
时,只有我的命令会被执行,啊,还有很多东西要学。谢谢:)