#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
Questo non sembra funzionare. Qualcuno può aiutare?Come utilizzare Bash per creare una cartella se non esiste già?
#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
Questo non sembra funzionare. Qualcuno può aiutare?Come utilizzare Bash per creare una cartella se non esiste già?
È necessario spazi all'interno delle parentesi [
e ]
:
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]
then
mkdir -p /home/mlzboy/b2c2/shared/db
fi
penso che si dovrebbe riformattare il codice un po ':
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
In primo luogo, in bash "[" è solo un comando, che si aspetta la stringa "]" come ultimo argomento, quindi lo spazio bianco prima della parentesi di chiusura (e tra "!" e "-d" che devono essere anche due argomenti separati) è importante:
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi
In secondo luogo, dal momento che si utilizza -p passa a mkdir
, questo controllo è inutile, perché questo è ciò che fa in primo luogo. Basta scrivere:
mkdir -p /home/mlzboy/b2c2/shared/db;
e questo è tutto.
In realtà non è necessario verificare se esiste o meno. Dal momento che si vuole già per crearlo se esiste, semplicemente mkdir farà
mkdir -p /home/mlzboy/b2c2/shared/db
Semplicemente fare:
mkdir /path/to/your/potentially/existing/folder
mkdir genera un errore se la cartella esiste già. Per ignorare gli errori di scrittura:
mkdir -p /path/to/your/potentially/existing/folder
Non c'è bisogno di fare alcun controllo o qualcosa di simile.
Modo più pulito, analisi di scelta rapida degli operatori logici shell. Il lato destro dell'operatore viene eseguito solo se il lato sinistro è vero.
[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db
mmh, non più pulito: solo più corto. È difficile capire il significato di una tale affermazione se la si incontra. –
Mi piace, anche se l'argomento '-p' rende superfluo il controllo. Puoi ancora usarlo quando non vuoi usare '-p', cioè quando * non vuoi * che tutte le directory madri vengano create automaticamente. – ADTC
In realtà è ancora più breve scrivere '[-d/path/to/dir] || mkdir/path/to/dir' .. lato destro viene eseguito quando il lato sinistro è falso. – ADTC
Perché si ha il punto e virgola? – ADTC