Antworten:
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
Übersetzung: Wenn die Anzahl der Argumente nicht (numerisch) gleich 1 ist oder das erste Argument kein Verzeichnis ist, geben Sie die Verwendung an stderr aus und beenden Sie sie mit einem Fehlerstatuscode.
Freundlichere Fehlerberichterstattung:
#!/bin/sh
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
if ! [ -e "$1" ]; then
echo "$1 not found" >&2
exit 1
fi
if ! [ -d "$1" ]; then
echo "$1 not a directory" >&2
exit 1
fi
if [ "$#" -ne 1 ] ; then
oder if ! [ -d "$1" ]; then
um festzustellen, welche Klausel das Problem verursacht.
-d
es betrifft. Wenn Sie einen separaten Scheck hinzufügen möchten, können Sie ihn -e
auf Existenz prüfen.
-e
Gibt true zurück, wenn die Datei vorhanden ist. Ich habe der Antwort eine freundlichere Fehlerberichterstattung hinzugefügt.
cat script.sh
var1=$1
var2=$2
if [ "$#" -eq 2 ]
then
if [ -d $var1 ]
then
echo directory ${var1} exist
else
echo Directory ${var1} Does not exists
fi
if [ -d $var2 ]
then
echo directory ${var2} exist
else
echo Directory ${var2} Does not exists
fi
else
echo "Arguments are not equals to 2"
exit 1
fi
Führen Sie es wie folgt aus -
./script.sh directory1 directory2
Die Ausgabe wird wie folgt sein:
directory1 exit
directory2 Does not exists
Sie können die Gesamtzahl der Argumente, die in der Befehlszeile übergeben werden, mit " $#
" überprüfen.
Beispiel: Mein Shell-Skriptname lautethello.sh
sh hello.sh hello-world
# I am passing hello-world as argument in command line which will b considered as 1 argument
if [ $# -eq 1 ]
then
echo $1
else
echo "invalid argument please pass only one argument "
fi
Ausgabe wird sein hello-world
shell
das bedeutet/bin/sh