Seu comando pode falhar se dir1/dir2
existir, mas não for um diretório. Se você quiser testar se dir1/dir2
existe, use -e
[ -e dir1/dir2 ] || mkdir dir1/dir2
Se você realmente precisa de dir1/dir2
para ser um diretório, e um arquivo comum com esse nome é um erro e deve ser substituído, você pode testar para esse caso.
[ -e dir1/dir2 ] && [ ! -d dir1/dir2 ] && rm dir1/dir2
[ -d dir1/dir2 ] || mkdir dir1/dir2