Übergabeparameter für Skript (von überall aufrufbar)

z0tti

Ensign
Registriert
Dez. 2007
Beiträge
171
Hi,

ich bin nicht so Linuxaffin und bräuchte etwas Hilfe. Ich habe folgende Binary (http://soplex.zib.de/) runtergeladen und dafür entsprechende Files zum Lösen.
Die Binary habe ich in einem Ordner in meinem Home-Verzeichnis gepackt, die zu lösenden Probleme/Files in einem anderen.
Wenn ich im Terminal die Binary ausführe mit exaktem Pfad zu einem Problem , funktioniert das einwandfrei.
Bsp:
Code:
./soplex/soplex-2.0.1.linux.x86_64.gnu.opt /instances/besipielproblem.mps.gz
Dies ist mir jedoch auf Dauer und aufbauend zu umständlich.

Ich habe ein Skript im bin-Ordner unter $home erstellt, sodass ich die Binary unabhängig vom aktuellen Pfad ausführen kann.
Code:
#! /bin/sh
cd /$home/soplex/
./soplex-2.0.1.linux.x86_64.gnu.opt $1
Dies führt jedoch zu einem Problem beim aufruf "soplex besipielproblem.mps.gz": Lasse ich "$1" weg, so wird mir bei der Ausführung gesagt "missing file", mit "$1" bekomme ich einen Error while reading file.

Ich vermute mal, dass ein einfacher Fehler beim Skript oder woanders vorliegt, komme aber im Moment nicht drauf.
Hat jemand einen Rat?
Benutze Ubuntu 14.04
 
Zuletzt bearbeitet:
Die Pfadangabe zur übergebenen Datei ist nicht vollständig.

Code:
#! /bin/sh

~/soplex/soplex-2.0.1.linux.x86_64.gnu.opt ~/instances/$1

(~ wird von der Shell zum Inhalt der Umgebungsvariable $HOME erweitert, dem vollen Pfad zum Heimatverzeichnis des Nutzers.)

Aufruf:

user@host:~$ meinskript.sh beispielproblem.mps.gz

Eine andere Lösung wäre, auf das Skript zu verzichten und stattdessen eine Funktion in die .bashrc zu setzen:

Code:
myfunc() {
        ~/soplex/soplex-2.0.1.linux.x86_64.gnu.opt ~/instances/$1
}

Dann neu laden mit ...

user@host:~$ . .bashrc

... und Aufruf mit:

user@host:~$ myfunc beispielproblem.mps.gz
 
Hat es einen Grund, dass du ein Skript erstellt hast? Da du schreibst, dass du mit Linux nicht so fit bist vermute ich mal, dass du Folgendes vl nicht kennst :
Code:
ln - s /home/dein_name/soplex/soplex-2.0.1.linux.x86_64.gnu.opt /home/dein_name/bin/soplex
erzeugt einen link auf die Binary. Unter dem Namen 'soplex' ist sie so ebenfalls über die Kommandozeile ausführbar und sollte auch Parameter entgegennehmen.
 
@Moranaga: Die Pfadvervolständigung mit ~ hat das Problem leider nicht gelöst. Das hinzufügen einer Funktion in der Bash-Konfigurationsdatei jedoch schon. Danke!

@tiash: Nein, ein Grund für ein Skript gibt es nicht, mir war nur keine andere Methode unter Linux bekannt. Das Erstellen einer Verlinkung ist natürlich praktisch und gut zu wissen. Es hat auch funktioniert. Danke!

Mein Problem ist also gelöst. Frohe Ostertage!
 
Zurück
Oben