bash: [: trop d’arguments?

J’essaie de créer un répertoire et de le cd :

Dans ~ / .bashrc:

 function abc() { appname=$1 appdir="$HOME/code/$appname" if [ mkdir $appdir -a cd $appdir ]; then echo Success else echo Failed to create and switch directory fi } 

Lorsque je recharge bashrc ( . ~/.bashrc ), le message d’erreur suivant s’affiche:

 bash: [: too many arguments Failed to create and switch directory 

Comment puis-je réparer ça? Et que signifie [: dans l’erreur?

Ps. Est-ce que quelqu’un pourrait me diriger vers un tutoriel de script bash “non-cryptique”?

L’erreur principale dans votre script est que la commande [ , équivalente à la commande test , est utilisée pour tester des conditions, telles que la comparaison de chaînes, l’existence de fichiers, etc.

Pour tester l’état de sortie des processus, vous devez utiliser if sans [ , votre script pourrait donc être

 if mkdir "$appdir" && cd "$appdir"; then echo "Success" else echo "Failed to create and switch directory" fi 

Ceci est expliqué dans Bash Pitfalls: 9. if [grep foo myfile .

Je vous suggère de passer par GrayCat Bash Guide pour comprendre bash.

Un prototype pourrait être:

  • Créez un fichier sur votre bureau: touch newDirectory.sh
  • Rendre le fichier exécutable: chmod +x newDirectory.sh
  • Pour appeler le script depuis un terminal du bureau: ./newDirectory.sh anyName

/

 #!/bin/bash function abc() { appname=${1} appdir="$HOME/Desktop/$appname" if (( mkdir "${appdir}" )) ; then cd "${appdir}" echo "Success" else echo "Failed to create and switch directory" fi } abc ${1} 

Petite recommandation: si vous êtes nouveau, ne jouez pas avec .bashrc 🙂