Nie wiem, czy to jest zła rzecz, ani co to znaczy. Mój skrypt nadal działa poprawnie, ale czy powinienem to naprawić?
#!/bin/sh
#This script will send text and maybe images to other computers via ssh and scp.
#Configuration files in same folder
source /Users/jacobgarby/Desktop/messaging/messages.cfg
TIME=$(date +"%H:%M:%S")
CONNECTED[0]="[email protected]"
if [ -d messages.log ]; then
:
else
touch messages.log
fi
read MSG
if [ "$MSG" == "!help" ]; then
echo ; echo "!clear Clear's your personal chat log."
echo "!ban [usrname] Prevents a user from entering this chat IN DEV."
else
echo "$TIME | $USER | $MSG" >> messages.log; echo >> messages.log; echo >> messages.log
tail messages.log
fi
for CONNECTION in CONNECTED; do
echo "It works"
done
if [ "alerttype" == "notification"]; then
osascript -e 'display notification "You have recieved a message!" with title "Message"'
else
osascript -e 'display dialog "You have recieved a message!" with title "Message"'
fi
bash
bash-scripting
Jacob_
źródło
źródło
alerttype
nigdy nie będzie taki sam jak łańcuchnotification
. Być może masz na myśli[ "$alerttype" = "notification" ]
?=
, nie==
- patrz specyfikacja POSIX pod adresem pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html i zobaczysz, że obsługiwana składnia porównania łańcuchów tos1 = s2
;==
jest rozszerzeniem bash i nie wszystkie systemy operacyjne i powłoki będą go obsługiwać; jeśli chcesz użyć operatora porównania o rozszerzonym bashu zamiast standardowego operatora POSIX,[[ ]]
, nie[ ]
).Odpowiedzi:
messaging.sh: linia 29: [: brak ']'
Używasz następujących elementów:
Jednak powyższemu poleceniu brakuje a
space
przed]
, powinno być:Podstawowe zasady warunków
Źródło Warunki w skryptach bash (jeśli instrukcje)
źródło
[ "alerttype" == "notification" ]
, porównuje dwie stałe, co oznacza nigdy Mów prawdę. Być może jeden koniec lub druga strona powinny być zmiennym odniesieniem? Również,==
nie jest w specyfikacji POSIXtest
; aby być przenośnym, musi być=
.Brakuje ci jednego miejsca.
Inny przykład:
źródło
[ "alerttype" == "notification" ]
, porównuje dwie stałe, co oznacza nigdy Mów prawdę. Również,==
nie jest w specyfikacji POSIXtest
; aby być przenośnym, musi być=
.Brakuje miejsca przed
]
Inną opcją formatu jest:źródło