-1

如果我在哪里测试 file1.txt 和 file2.txt 是否包含至少一些文本并且 file3.txt 不包含某些行,我想要 bash。像这样的东西,但这里有错误:

if [ -s file1.txt ] && [ -s file2.txt ] && [! grep -q "^SEQADV" file3.txt ]

抱歉,如果存在类似的问题,但如果在这里讨论,我从未发现如此复杂。

4

2 回答 2

3

您不需要在grep条件周围使用括号。可以这样做:

if [ -s file1.txt ] && [ -s file2.txt ] && ! grep -q "^SEQADV" file3.txt 

或者,使用[[

if [[ -s file1.txt && -s file2.txt ]] && ! grep -q "^SEQADV" file3.txt 
于 2013-07-22T10:57:57.507 回答
-1

if [[ -s file1.txt && -s file2.txt && -z "$(grep "^SEQADV" file3.txt)" ]]

UPD:是的,grepping 整个文件在这里有点多余,所以@dogbase 的答案是正确的:

if [[ -s file1.txt && -s file2.txt ]] && ! grep -q "^SEQADV" file3.txt

于 2013-07-22T10:50:08.017 回答