O principal erro em seu script é que o comando [
, equivalente ao comando test
, é usado para testar condições, como comparação de string, existência de arquivos e assim por diante.
Para testar o status de saída dos processos, você precisa usar if
sem [
, portanto, seu script pode ser
if mkdir "$appdir" && cd "$appdir"; then
echo "Success"
else
echo "Failed to create and switch directory"
fi
Isso é explicado em Armadilhas do Bash: 9. if [grep foo myfile .
Eu sugiro que você passe pelo Guia de GrayCat Bash para entender o bash.