Frage

Ich möchte ein einfaches Bash-Skript erstellen, ein Java-Programm unter OS X. Die Namen der Datei, den Dateipfad zu starten, und der unmittelbaren Arbeitsordner alle Leerzeichen enthalten. Wenn ich dies tun:

#!/bin/sh
cd `dirname $0`

ich

usage: dirname path

Ich habe auch versucht Zitate in allen Arten von verschiedenen Orten setzen. Das aufwendigste Beispiel ist

cd "`dirname \"$0\"`"

Nichts hat funktioniert. Ich entweder erhalten Fehlermeldungen oder dass kryptische „Nutzung: DIRNAME Pfad“ Nachricht

.

Was gibt andere Methoden, die funktionieren könnte?


Edit: scheint dies kein Problem für jedermann, aber ich zu sein, so dass es nur meine Box sein muss. Ich werde meinen eigenen Beitrag unten akzeptieren, weil es die einzige Lösung, die für dieses spezielle Problem gearbeitet. Ich bin aber auf jeden Fall die Lösungen upvoting, die für alle anderen zu arbeiten scheinen und wirklich Hilfe schätzen jeden.

War es hilfreich?

Lösung 3

Was schließlich für mich gearbeitet ändert sich dies:

#!/bin/sh
cd `dirname $0`

Um dies zu:

#! /bin/zsh
cd "${0:h}"

Dies unterstützt auch Dateinamen und Dateipfade Leerzeichen enthalten. Hier ist, wo ich es gefunden: http://rentzsch.com/unix/locationAwareCommandFiles

Andere Tipps

Was ist mit:

cd "$(dirname "$0")"

Das hier funktioniert für mich.

#!/bin/sh
cd "$(dirname "$0")"

die inneren Anführungszeichen Flüchten ist nicht notwendig:

cd "`dirname "$0"`"

Aber das geht nicht an die Wurzel des Problems, das ist, dass irgendwie der Wert von $ 0 scheint leer zu sein, oder vielleicht etwas seltsam. Versuchen Sie, läuft das Skript so aus:

bash -x scriptname

Dies wird jede Zeile Echo, mit Variablen interpoliert, bevor es ausgeführt wird. Es ist sehr nützlich für das Debuggen. Auch sehr hilfreich sind:

-u: abort on attempt to use undefined variable
-e: abort on first error

Hey nicht sicher darüber ... Aber ist es möglich, dass Ihr

#!/bin/sh 

verweist auf etwas, das nicht einschlagen wird? Was ich in der Regel verwenden:

#!/usr/bin/bash

Pretty neu in der ganzen Scripting Sache so nicht sicher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top