warum ist es falsch mit "if [ $# > 0 ] ; dann'?
warum hat es noch eine Ausgabe in der Dritten Befehl?
$cat sh.sh
#!/bin/sh
echo $#
if [ $# > 0 ] ; then
base=`basename $1 .c`
echo $base
fi
$ sh sh.sh a.c
1
a
$ sh sh.sh
0
.c
Ich diese file:/usr/share/doc/opencv-doc/examples/c/build_all.sh bauen die c-Beispiele für die opencv Pakete,aber nicht mit ähnlichen Fehlern.
Wenn Ihr shebang sagt
#!/bin/sh
du bist nicht wirklich mit der Bash. Wenn Sie verwenden möchten >
- und Doppel-Klammern als codaddict erwähnt, dann müssen Sie #!/bin/bash
. Dann können Sie if (( $# > ))
.InformationsquelleAutor schemacs | 2011-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
-gt
im Ort>
.Können Sie
>
wenn Sie Doppel-Klammer konstruieren.#!/bin/bash
oder > bis -gt.InformationsquelleAutor codaddict
Denken Sie daran, dass
[
ist ein Befehl./usr/bin/[
um genau zu sein. Es ist mit dem Befehl/usr/bin/test
So,
[ $# > 0
ist identisch mittest $# > 0
, d.h., umleitentest $#
's Ausgabe der0
Datei.Wenn Sie
bash
... nun das ist eine andere Geschichte zusammen 🙂[
ist ein builtin in mehrere Schalen zusätzlich zu Bash, aber Sie sind richtig, dass es ein command./usr/bin/[
(und/usr/bin/test
) besteht meist für die rückwärts-Kompatibilität für Muscheln, die sich nicht gehören. Es kann auch verwendet werden, wenn Sie nicht wirklich mit einer Schale, zum Beispiel in der-exec
- Klausel einerfind
Befehl.InformationsquelleAutor pepoluan
Sollten Sie verwenden
-gt
(Größer als) in Ihrem Zustand, nicht>
. Blick aufman test
für weitere Informationen.InformationsquelleAutor dogbane