如果我在哪里测试 file1.txt 和 file2.txt 是否包含至少一些文本并且 file3.txt 不包含某些行,我想要 bash。像这样的东西,但这里有错误:
if [ -s file1.txt ] && [ -s file2.txt ] && [! grep -q "^SEQADV" file3.txt ]
抱歉,如果存在类似的问题,但如果在这里讨论,我从未发现如此复杂。
如果我在哪里测试 file1.txt 和 file2.txt 是否包含至少一些文本并且 file3.txt 不包含某些行,我想要 bash。像这样的东西,但这里有错误:
if [ -s file1.txt ] && [ -s file2.txt ] && [! grep -q "^SEQADV" file3.txt ]
抱歉,如果存在类似的问题,但如果在这里讨论,我从未发现如此复杂。
您不需要在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
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