在bash中只执行两个相同if语句中的第一个
我有一个小的在bash中只执行两个相同if语句中的第一个,bash,Bash,我有一个小的bash测试脚本,如下所示: $ cat test #!/bin/bash if ! grep --silent "$1" "$3"; then echo "$1 not matched."; fi; exit 1; if ! grep --silent "$2" "$3"; then echo "$2 not matched."; fi; exit 1; $ cat foobar FOO BAR $ cat test #!/bin/bash #if ! grep --silen
bash
测试脚本,如下所示:
$ cat test
#!/bin/bash
if ! grep --silent "$1" "$3"; then echo "$1 not matched."; fi; exit 1;
if ! grep --silent "$2" "$3"; then echo "$2 not matched."; fi; exit 1;
$ cat foobar
FOO
BAR
$ cat test
#!/bin/bash
#if ! grep --silent "$1" "$3"; then echo "$1 not matched."; fi; exit 1;
if ! grep --silent "$2" "$3"; then echo "$2 not matched."; fi; exit 1;
还有一个测试文件,如下所示:
$ cat test
#!/bin/bash
if ! grep --silent "$1" "$3"; then echo "$1 not matched."; fi; exit 1;
if ! grep --silent "$2" "$3"; then echo "$2 not matched."; fi; exit 1;
$ cat foobar
FOO
BAR
$ cat test
#!/bin/bash
#if ! grep --silent "$1" "$3"; then echo "$1 not matched."; fi; exit 1;
if ! grep --silent "$2" "$3"; then echo "$2 not matched."; fi; exit 1;
现在我做以下几点:
$ ./test FOO BAR foobar
$ ./test FOOH BAR foobar
FOOH not matched.
$ ./test FOO BARG foobar
$
在我看来,最后一次运行时,/test FOO BARG foobar
应该会产生输出BARG not matched.
,脚本停止执行。是什么原因使它不能像我期望的那样工作?有没有更好的方法实现同样的逻辑
编辑:
还有,如果我把第二句话注释掉,像这样:
$ cat test
#!/bin/bash
if ! grep --silent "$1" "$3"; then echo "$1 not matched."; fi; exit 1;
if ! grep --silent "$2" "$3"; then echo "$2 not matched."; fi; exit 1;
$ cat foobar
FOO
BAR
$ cat test
#!/bin/bash
#if ! grep --silent "$1" "$3"; then echo "$1 not matched."; fi; exit 1;
if ! grep --silent "$2" "$3"; then echo "$2 not matched."; fi; exit 1;
执行第二条if语句:
$ ./test FOO BARG
$ BARG not matched.
因此,似乎只有第一个连续的if语句被执行。如果我将脚本扩展为具有三个类似的if语句,也会发生这种情况。您的代码看起来像这样,格式稍微好一些:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
fi;
exit 1;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
fi;
exit 1;
可能您希望在ifs中包含退出声明:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
exit 1;
fi;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
exit 1;
fi;
您的代码看起来是这样的,格式稍微好一点:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
fi;
exit 1;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
fi;
exit 1;
可能您希望在ifs中包含退出声明:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
exit 1;
fi;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
exit 1;
fi;
您的代码看起来是这样的,格式稍微好一点:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
fi;
exit 1;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
fi;
exit 1;
可能您希望在ifs中包含退出声明:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
exit 1;
fi;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
exit 1;
fi;
您的代码看起来是这样的,格式稍微好一点:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
fi;
exit 1;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
fi;
exit 1;
可能您希望在ifs中包含退出声明:
#!/bin/bash
if ! grep --silent "$1" "$3"; then
echo "$1 not matched.";
exit 1;
fi;
if ! grep --silent "$2" "$3"; then
echo "$2 not matched.";
exit 1;
fi;