Estoy tratando de crear un directorio y cd
en é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>; fi
Respuestas:
El principal error en su script es que el
[
comando, equivalente altest
comando, 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
if
sin 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.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/ /
Pequeña recomendación: si eres nuevo, no te metas con
.bashrc
:)fuente
{
. 2) nunca se ejecutamkdir
. 3) nocd
probaste el estado de salida. 4) No pongas extensiones en los scripts. Especialmente no.sh
cuando 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)