web-dev-qa-db-fra.com

Ensemble Linux / Ubuntu: option illégale -o pipefail

La ligne de code mentionnée ci-dessous utilisée pour moi tout le temps sur une distribution Ubuntu 16.04, mais soudainement l'option-nom pipefail est une option illégale:

set -eu -o pipefail

retour:

ensemble: option illégale -o pipefail

Pourquoi cela arrive-t-il? J'exécute la commande sur un système installé totalement installé et dans le cadre d'un script shell. Le code est placé juste au début:

myscript.sh:

1 #!/bin/bash
2 set -eu -o pipefail
3 ...

Le script est exécuté comme sudo:

Sudo sh ./myscript.sh
8
sunwarri0r

Tu cours bin/sh, sur Ubuntu c'est un lien symbolique pointant vers /bin/dash, mais pipefail est un bashisme.

Rendre le script exécutable:

chmod +x myscript.sh

puis exécutez le script comme suit:

Sudo ./myscript.sh
4
l0b0

J'ai eu la même erreur lors de l'exécution du script de zsh et le script a commencé avec incorrect shebang.

Mal, manquant ! après #:

#/bin/bash
rest-of-the-script

Correct:

#!/bin/bash
rest-of-the-script
0
Mike