Cercando di installare un file .sh che automatizzerà l'installazione di .pkg

2

Come titolo, sto cercando di installare un file .sh ma non riesco a farlo funzionare. Quando eseguo sh o bash autopkginstall.sh

Ottengo il seguente errore;

/usr/local/bin/autopkginstall.sh: line 18: zmodload: command not found
/usr/local/bin/autopkginstall.sh: line 20: strftime: command not found
/usr/local/bin/autopkginstall.sh: autopkginstall.sh: line 119: syntax error: unexpected end of file

Di seguito è il .sh che sto cercando di installare.

#!/bin/zsh
# Purpose: automatically install any pkg file put into a certain folder
#
# From: Tj Luo.ma
# Mail: luomat at gmail dot com
# Web:  http://RhymesWithDiploma.com
# Date: 2013-12-11

    # variable to refer to script name without path
NAME="$0:t:r"

    # directory to check for pkg or mpkg files
DIR="$HOME/Action/AutoInstallPKG"

    # where do you want files to be moved after they are installed
SUCCESS_MOVE_TO="$HOME/.Trash/"

zmodload zsh/datetime

TIME=$(strftime "%Y-%m-%d--%H.%M.%S" "$EPOCHSECONDS")

    # where do you want files to be moved if they FAIL to be installed
ERROR_MOVE_TO="$HOME/Desktop/"

    # log our output here
LOG="$HOME/Library/Logs/AutoInstallPKG.$TIME.log"

    # quick function to
log () {

    echo "$NAME: $@" | tee -a "$LOG"

    if (( $+commands[terminal-notifier] ))
    then

        # if terminal-notifier exists, use it

        terminal-notifier -group "$NAME" \
                -sender com.apple.installer \
                -subtitle "Click to show folder $DIR:t" \
                -title "$NAME via launchd" \
                -message "$@"
    fi
}

die () { log "FATAL ERROR: $@" ; exit 1 }

if [ ! -d "$DIR" ]
then
        die "DIR is not a directory: $DIR"
fi

[[ ! -d "$SUCCESS_MOVE_TO" ]] && mkdir -p "$SUCCESS_MOVE_TO"

[[ ! -d "$ERROR_MOVE_TO" ]] && mkdir -p "$ERROR_MOVE_TO"

cd "$DIR" || die "Failed to chdir to $DIR"

    # remove .DS_Store file if it exists, so it won't keep launching 'launchd'
rm -f .DS_Store

command ls -1 | while read line
do

    EXT="$line:e"

    case "$EXT" in
        pkg|mpkg)
                    log "Installing $line"
                    sudo installer -verboseR -pkg "$line" -target / -lang en 2>&1 | tee -a "$LOG"

                    EXIT="$?"

                    if [ "$EXIT" = "0" ]
                    then
                            log "$line installed!"

                            command mv -n "$line" "$SUCCESS_MOVE_TO" ||\
                            command mv -n "$line" "$ERROR_MOVE_TO"

                    else
                            log "Failed to install $line"
                            command mv -n "$line" "$ERROR_MOVE_TO"
                    fi
        ;;

        *)
                    log "$line is not a pkg or mpkg file"
                    command mv -n "$line" "$ERROR_MOVE_TO"
        ;;
    esac
done

REBOOT=no

fgrep -q 'installer: The install recommends restarting now.' "$LOG" && REBOOT=should

fgrep -q 'installer: The install requires restarting now.'   "$LOG" && REBOOT=must

case "$REBOOT" in
    must)
            log "You MUST reboot to complete installation!"
    ;;

    should)
            log "You should reboot to complete installation!"
    ;;

    no)
            log "No reboot required"
    ;;

esac


exit
#
#EOF

Sono molto nuovo a questo quindi per favore nuda con me. Sto cercando di seguirlo; link

    
posta Fredric Carlberg 15.12.2016 - 16:41
fonte

1 risposta

3

Il file shebang #!/bin/zsh (prima riga nel file) indica che il file deve essere eseguito con la shell zsh. Bash e sh hanno sintassi diverse per zsh - dovresti usare la shell zsh per eseguire questo file.

Lo shebang è usato in modo che il file stesso possa specificare la shell che dovrebbe eseguire il file. Specificando /usr/bin/env /path/to/file.sh nel plist dell'agent di lancio, si forza a eseguire il file con la shell determinata dalla variabile SHELL che di solito è bash su macOS. Invece, fornisci solo il percorso del file, /path/to/file.sh e lo shebang causerà l'uso automatico di zsh.

    
risposta data 15.12.2016 - 17:04
fonte

Leggi altre domande sui tag