2017-03-03 5 views
1

Ich habe ein Skript in /A/B/script.sh. Wenn es aufgerufen wird, muss es Dateien in/X/Y/Z bearbeiten. Wie kann ich ein Arbeitsverzeichnis speziell für das Skript, in das Skript festlegen?Setze Arbeitsverzeichnis für Skript

+0

Anmerkung: Ich weiß, dass ich es manuell mit aufrufen können (cd/X/Y/Z; ./script.sh), aber ich brauche das Skript ausführen in einem crontab –

+0

crontab regelmäßig zu nimmt tatsächlich eine Zeichenfolge mit laufen '/ bin/sh -c" yourstring "' (ersetzt '/ bin/sh', wenn Ihre crontab eine eigene' SHELL'-Variable liefert), also ist sie nicht auf einen Befehl gleichzeitig beschränkt. –

+0

und BTW, wenn Sie es in Parens so machen, verwenden Sie 'exec':' (cd/X/Y/Z && exec./Script.sh) '- so die Kosten, die Sie bezahlen Die Subshell, nach der die Parens fragen, wird ausgeglichen, indem diese Subshell über eine 'exec' konsumiert wird, anstatt Ihre' script.sh' als Subprozess der Subshell auszuführen, die selbst ein Subprozess ist. –

Antwort

1

Setzen Sie eine cd-Anweisung in das Skript, genau wie Sie es eingeben würden, um Ihr Arbeitsverzeichnis aus einer interaktiven Bash-Shell zu erstellen.

+1

Eigentlich - * in * das Skript, sollte es Fehlerbehandlung haben. dh. 'cd/X/Y/Z || exit "- ein Mensch, der Dinge interaktiv ausführt, merkt, wenn ein' cd' fehlschlägt, ein Skript ändert sonst Dateien im falschen Verzeichnis. Siehe https://github.com/koalaman/shellcheck/wiki/SC2164 –

Verwandte Themen