J’essaie de créer un répertoire et de le cd
:
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:
touch newDirectory.sh
chmod +x newDirectory.sh
./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
🙂