Estoy tratando de crear un directorio y cden él:
En ~ / .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
}
Cuando vuelvo a cargar bashrc ( . ~/.bashrc) me sale el error:
bash: [: too many arguments
Failed to create and switch directory
¿Cómo puedo solucionar esto? ¿Y qué significa [:en el error?
PD. ¿Alguien podría dirigirme a un tutorial de script de bash "no críptico"?

if <COMMANDS>; then <COMMANDS>; fiRespuestas:
El principal error en su script es que el
[comando, equivalente altestcomando, se usa para probar condiciones, como la comparación de cadenas, la existencia de archivos, etc.Para probar el estado de salida de los procesos que tiene que usar
ifsin ellos[, entonces su script podría serEsto se explica en Bash Pitfalls: 9. if [grep foo myfile .
Le sugiero que consulte la Guía de GrayCat Bash para comprender bash.
fuente
Un prototipo podría ser:
touch newDirectory.shchmod +x newDirectory.sh./newDirectory.sh anyName/ /
Pequeña recomendación: si eres nuevo, no te metas con
.bashrc:)fuente
{. 2) nunca se ejecutamkdir. 3) nocdprobaste el estado de salida. 4) No pongas extensiones en los scripts. Especialmente no.shcuando ni siquiera es un sh-script. 5) Ponerlo en un script anula el propósito de la función. mywiki.wooledge.org/BashGuide{estaba allí antes de mi edición.'mkdir "$ {appdir}"'(mira los ticks posteriores)