J'essaie de créer un répertoire et cd
dans celui-ci:
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 [
, afin que votre script puisse être
if mkdir "$appdir" && cd "$appdir"; then
echo "Success"
else
echo "Failed to create and switch directory"
fi
Ceci est expliqué dans Pièges Bash: 9. si [grep foo myfile] .
Je suggère que vous parcouriez Guide GrayCat Bash pour comprendre bash.