REGEX 在 Upstart 脚本中不起作用

REGEX 在 Upstart 脚本中不起作用

对于 Upstart Script,正则表达式总是给出错误的结果,但是一旦我手动运行脚本它就会起作用。

/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

这是 sync_users 代码:

#!/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

答案1

代码运行良好,问题是 upstart 脚本默认不运行 BASH 脚本,除非你提到它是 bash 脚本。所以我将 upstart 脚本更改为:

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

相关内容