![Bash 스크립트가 예상대로 실행되지 않습니다.](https://linux55.com/image/76593/Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20%EC%98%88%EC%83%81%EB%8C%80%EB%A1%9C%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
나는 (네트워크 관리자에 의해) 전달된 연결 uuid를 가져오고 이를 내 홈 연결(물리적 연결 및 VPN)에 대한 uuid 목록과 비교하고 몇 가지 명령을 실행하기 위해 아래 스크립트를 얻으려고 합니다. 그러나 uuid가 정확하더라도 스크립트는 항상 "else" 절로 이동하는 것 같습니다.
#!/bin/bash
echo $CONNECTION_UUID
Home_UUIDs="5b509e73-8f08-475c-a14d-7037f2f4b87a ba36c69e-c3f1-4480-a484-1eea105311b2 f3889052-719f-4b88-8b94-e1fa189d44f9"
if [[ "$Home_UUIDs" == *"$CONNECTION_UUID"* ]]; then
case "$2" in
up)
echo "Conecting to Home netork..."
ntpdate -vs 192.168.0.18
service ntp start
;;
down)
echo "Disconnecting from home network"
service ntp stop
;;
esac
else
echo "We're not at home..."
service ntp stop
fi
exit 0
답변1
세 가지 UUID 모두에서 작동하는 것 같습니다.
#!/bin/bash
Home_UUIDs='5b509e73-8f08-475c-a14d-7037f2f4b87a ba36c69e-c3f1-4480-a484-1eea105311b2 f3889052-719f-4b88-8b94-e1fa189d44f9'
for CONNECTION_UUID in 5b509e73-8f08-475c-a14d-7037f2f4b87a \
ba36c69e-c3f1-4480-a484-1eea105311b2 \
f3889052-719f-4b88-8b94-e1fa189d44f9 ; do
if [[ "$Home_UUIDs" == *"$CONNECTION_UUID"* ]]; then
echo "We're at home!"
else
echo "We're not at home..."
fi
done
$CONNECTION_UUID에 다른 문자가 있습니까?
답변2
마지막으로 괄호 안의 명령문을 다음으로 바꾸어 문제를 해결했습니다.
[[ "$Home_UUIDs" =~ "$CONNECTION_UUID" ]]
바꾸다
[[ "$Home_UUIDs" == *"$CONNECTION_UUID"* ]]