나는 다음을 가지고 있습니다 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
성공적인 결과를 얻을 수 있습니다 .80
800
8000
$ 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