私は(ネットワークマネージャによって)渡された接続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
3つの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"* ]]