Je veux lancer le script suivant
#!/bin/sh temp =`date +%Y%m%d` echo "$temp"
Mais cela ne fonctionne pas comme prévu, il lance ce message d’erreur temp: exécuter l’autorisation refusée
Tu as
temp =`date +%Y%m%d` ^
Vous devez donc supprimer l’espace entre temp
et date
:
#!/bin/sh temp=$(date +%Y%m%d) # better than `exp`, thanks @OliverDulac (see comments) echo "$temp"
Avec ça ça marche pour moi.
Assurez-vous que le fichier dispose des permissions d’exécution:
chmod +x your_file
ou juste l’exécuter avec
/bin/sh /your/script/path/your_file
temp
variable temp
doit être atsortingbuée sans espaces.
Votre script a en effet une erreur de syntaxe, pour le corriger, supprimez l’espace après temp
dans la deuxième ligne, mais cette erreur ne renverra pas l’ execute permission denied
mais la line 2: temp: command not found
.
Votre script ne dispose pas des droits d’exécution, pour le réparer, appelez:
chmod +x FILE.sh
où FILE
est le nom de ce script.
Dans les scripts sh (pas seulement bash), le signe égal n’est pas accepté lors de l’atsortingbution d’une variable, car vous pouvez faire quelque chose comme ceci:
VARIABLE=something ./runcommand
pour exporter cette variable dans le sous-processus ./runcommand mais pas en général dans tous les sous-processus.
Si l’espace était autorisé, il n’y aurait aucun moyen de distinguer la fin de l’affectation du début de la ligne de commande.
J’ai trouvé l’erreur dans mon code ci-dessus, j’ai autorisé un espace après la chaîne temp
. c’est à cause de l’erreur.