Tôi có một tập lệnh trong đó nó kiểm tra xem một gói có được cài đặt hay không và liệu cổng 8080 có được sử dụng bởi một quy trình cụ thể hay không. Tôi hoàn toàn không có kinh nghiệm với bash, vì vậy tôi đã làm một cái gì đó như thế này:
if dpkg -s net-tools; then
if netstat -tlpn | grep 8080 | grep java; then
echo "Shut down server before executing this script"
exit
fi
else
echo "If the server is running please shut it down before continuing with the execution of this script"
fi
# the rest of the script...
Tuy nhiên, khi tập lệnh được thực thi, tôi nhận được cả đầu ra dpkg -s net-tools
và netstat -tlpn | grep 8080 | grep java
đầu ra trong thiết bị đầu cuối và tôi không muốn điều đó, làm thế nào tôi có thể ẩn đầu ra và chỉ gắn với kết quả của if
s?
Ngoài ra, có cách nào thanh lịch hơn để làm những gì tôi đang làm không? Và đó là một cách thanh lịch để biết những gì quá trình đang sử dụng cổng 8080 (không chỉ là nếu nó đang được sử dụng), nếu có?
grep -q
, và bash mới hơn&> ...
như là một từ đồng nghĩa với> ... 2>&1