REGEX funktioniert im Upstart-Skript nicht

REGEX funktioniert im Upstart-Skript nicht

Beim Upstart-Skript gibt mir der reguläre Ausdruck immer „False“ zurück. Es funktioniert jedoch, wenn ich das Skript manuell ausführe.

/etc/init/sync_remote_users.conf:

start on filesystem and net-device-up IFACE!=lo
stop on runlevel [016]
respawn
##?
respawn limit 20 5
##?

script
    exec opt/local/our-sync-pkg-2.0/sync_users start
end script

Hier ist der sync_users-Code:

#!/bin/bash

for line in $(cat $DECRYPTED_PASSWORDS_FILE)
do
    if [[ !($line =~ ^[^-_][0-9a-zA-Z._-@]+\:[0-9a-zA-Z.\/$]{98}+$) ]]; then
        result=false;
   fi
done

Antwort1

Der Code funktionierte einwandfrei. Das Problem war, dass das Upstart-Skript standardmäßig keine BASH-Skripte ausführte, es sei denn, Sie erwähnen, dass es sich um ein Bash-Skript handelt. Also habe ich mein Upstart-Skript wie folgt geändert:

start on filesystem and net-device-up IFACE!=lo
stop on runlevel [016]

script
    exec bash -c '/opt/local/our-sync-pkg-2.0/sync_users start'
end script

verwandte Informationen