J'essaye de créer un répertoire et cd
dedans:
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
), j'obtiens l'erreur:
bash: [: too many arguments
Failed to create and switch directory
Comment puis-je réparer ça? Et que signifie [:
l'erreur?
Ps. Quelqu'un pourrait-il me diriger vers un didacticiel de script bash «non cryptique»?
if <COMMANDS>; then <COMMANDS>; fi
Réponses:
L'erreur principale de votre script est que la
[
commande, équivalente à latest
commande, est utilisée pour tester des conditions, comme la comparaison de chaînes, l'existence de fichiers, etc.Pour tester l'état de sortie des processus dont vous devez vous
if
passer[
, afin que votre script puisse êtreCeci est expliqué dans Bash Pitfalls: 9. if [grep foo myfile .
Je vous suggère de parcourir le GrayBat Bash Guide pour comprendre bash.
la source
Un prototype pourrait être:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
Petite recommandation: si vous êtes nouveau, ne plaisante pas
.bashrc
:)la source
{
. 2) il ne fonctionne jamaismkdir
. 3) vous n'avez pas testécd
l'état de sortie de. 4) Ne mettez pas d'extensions sur les scripts. Surtout pas.sh
quand ce n'est même pas un sh-script. 5) Le mettre dans un script va à l'encontre du but de la fonction. mywiki.wooledge.org/BashGuide{
c'était avant ma retouche.'
mkdir "$ {appdir}"'
(regardez les tiques arrière)