si, elif, else questions en Bash
Je n'arrive pas à travailler ce que le problème grâce à if
déclaration est en ce qui concerne la elif
et then
. Gardez à l'esprit le printf
est encore en développement, je n'en ai pas pu le tester encore dans l'énoncé est donc plus que probable que de mal.
L'erreur que j'obtiens est:
./timezone_string.sh: line 14: syntax error near unexpected token `then'
./timezone_string.sh: line 14: `then'
Et de l'instruction est comme si.
if [ "$seconds" -eq 0 ];then
$timezone_string="Z"
elif[ "$seconds" -gt 0 ]
then
$timezone_string=`printf "%02d:%02d" $seconds/3600 ($seconds/60)%60`
else
echo "Unknown parameter"
fi
- Je me demande pourquoi nous avons besoin la
then
déclaration dansif
etelif
mais pas danselse
, et aussi en général. - parce que nous avons besoin de séparer la condition de la séquence.
- Je ne vois pas bien la logique sur un marquage une 500K points de vue de la question comme un doublon de celui qui a seulement 5K
- À l'aide du code d'auto-outils de mise en forme peut vous aider grâce à l'ajout automatique/retrait d'espaces autour des crochets. Vous pouvez rechercher des plugins pour votre éditeur.
Vous devez vous connecter pour publier un commentaire.
Il y a un espace manquant entre
elif
et[
:devrait être
Que je vois cette question est d'obtenir beaucoup de points de vue, il est important de préciser que la syntaxe à suivre est la suivante:
sens que espaces sont nécessaires autour des crochets. Sinon, ça ne marchera pas. C'est parce que
[
lui-même est une commande.$ man [
$ man [
suis sortiebash: $: command not found...
, quel est le problème?if test "$seconds" -eq 0; then ... fi
est équivalent àif [ "$seconds" -eq 0 ];then ... fi ]
. @LeiYangman test
est exactement ce que vous recherchezVous avez quelques problèmes de syntaxe dans votre script. Voici une version fixe:
bash
"si-alors-sinon" construire j'ai facilement trouvé sur stackexchange...merci.#!/bin/sh
.#!/bin/sh
mais ne pas avoir à le faire.sh
peut être utilisé à la place pour plus de compatibilité (pas tous les *nix distributions a bash comme shell par défaut (certains ont ksh ou de la cendre, mais la plupart d'entre eux dépendent de la normesh
à la fonction). En outre, si bash spécifiques ou des fonctionnalités avancées n'est pas utilisé dans le script " sh " devrait être utilisé comme interprète (une raison de plus pour lui), car il peut gérer le script en lui-même.[
est une commande. Il doit être séparé par des espaces de l'instruction précédente:type -a [
de voir ça.Je vous recommande de jeter un oeil sur les bases de la climatisation dans bash.
Le symbole "[" est une commande et doit avoir un espace avant. Si vous ne donnez pas les espaces après votre elif, le système interprète elif[ comme une commande en particulier, qui n'est certainement pas ce que vous voulez à ce moment.
Utilisation:
En bref, l'édition de votre segment de code pour:
Vous seriez bien avec pas d'erreurs de compilation. Votre dernier segment de code devrait ressembler à ceci: