Estou tentando criar um diretório e cd
nele:
Em ~ / .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
}
Quando recarrego o bashrc ( . ~/.bashrc
), recebo o erro:
bash: [: too many arguments
Failed to create and switch directory
Como faço para corrigir isso? E o que significa [:
o erro?
Ps. Alguém poderia me direcionar para um tutorial de script bash "não enigmático"?
if <COMMANDS>; then <COMMANDS>; fi
Respostas:
O principal erro no seu script é que o
[
comando, equivalente aotest
comando, é usado para testar condições, como comparação de cadeias, existência de arquivos e assim por diante.Para testar o status de saída dos processos que você precisa usar
if
sem[
, para que seu script possa serIsso é explicado no Bash Pitfalls: 9. if [grep foo myfile .
Sugiro que você leia o GrayCat Bash Guide para entender o bash.
fonte
Um protótipo pode ser:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
Pouca recomendação: se você é novo, não mexa com
.bashrc
:)fonte
{
. 2) nunca é executadomkdir
. 3) você não testoucd
o status de saída. 4) Não coloque extensões nos scripts. Especialmente.sh
quando não é nem um sh-script. 5) Colocá-lo em um script anula o objetivo da função. mywiki.wooledge.org/BashGuide{
estava lá antes da minha edição.'
mkdir "$ {appdir}"'
(olhar na parte de trás carrapatos)