私は以下を持っています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