다른 명령을 실행하는 경우 해당 포트가 출력에 포함되는지 확인하세요.

다른 명령을 실행하는 경우 해당 포트가 출력에 포함되는지 확인하세요.

나는 다음을 가지고 있습니다 commandb: printf '%s' "${PORTS[0]}"; printf ',%s' "${PORTS[@]:1}"

다른 명령의 포트를 나열하고 해당 출력은 commandb다음과 같습니다.

2200,800,8000

이 포트는 파일 이름에 저장됩니다.res.txt

commandb특정 포트가 있는지 확인하고 싶습니다 8000. 그렇다면 포트를 실행하고 commandc, 그렇지 않으면 아무것도 하지 않습니다.

Bash에서 어떻게 이를 달성할 수 있나요?

답변1

grep -w다음을 사용하여 단어 경계를 지정할 수 있습니다 .

$ grep -qw '8000' res.txt && echo 'hello world'
hello world

-q옵션은 단순히 grep결과가 인쇄되는 것을 방지하므로 종료 코드에 따라 작업을 수행하면 됩니다. 해당 옵션이 없으면 다음 과 같이 래핑되어 있으므로 -w성공적인 결과를 얻을 수 있습니다 .808008000

$ grep -q '80' res.txt && echo 'hello world'; echo $?
hello world
0
$ grep -qw '80' res.txt && echo 'hello world'; echo $?
1

여러 포트가 존재하는지 확인하려면 다음을 수행하십시오.

if grep -qw -e '8000' -e '80' res.txt; then
    do something
fi

관련 정보