# bash-datei erstellen zum übergeben der parameter



## Cyston (4. Apr 2011)

Hallo Leute,


```
package uebergabeparameter;
import javax.swing.JOptionPane;

public class UebergabeParameter {

	/**
	 * @param args
	 */
	public static void main(String[] argumente) 
	{
		String ausgabe = "", titel = "";
		boolean parameter = false;
		
		if (argumente.length == 0)
		{
			ausgabe = "Es wruden keine Parameter übergeben.";
		}
		
		else
		{
			for (int i = 0; i < argumente.length; i++)
			{
				ausgabe += ( i + 1) + ". Parameter: "
				+ argumente[i] + "\n";
			}
			parameter = true;
		}
		
		if ( parameter )
		{
			titel = "Liste der Parameter";
		}
		else
		{
			titel = "Keine Parameter";
		}
		
		JOptionPane.showMessageDialog(
				null,
				ausgabe,
				titel,
				JOptionPane.PLAIN_MESSAGE);
		
		System.exit(0);
	}

}
```

für den oben angeführten Code benötige ich eine bash-file. leider habe ich erst vor kurzem angefangen auf linux zu arbeiten. auf windows würde das ganze so aussehen:


```
@echo off
rem Start der Java-Applikation UebergabeParameter
echo Aufruf ohne Parameter
java uebergabeparameter.UebergabeParameter
rem zweiter Aufruf
echo Aufruf mit Parameter
java uebergabeparameter.UebergabeParameter Heute ist es ganz schön kalt.
```


danke schonmal,

leon


----------



## hartzie (4. Apr 2011)

```
#! /bin/sh
# Start der Java-Applikation UebergabeParameter
echo Aufruf ohne Parameter
java uebergabeparameter.UebergabeParameter
# zweiter Aufruf
echo Aufruf mit Parameter
java uebergabeparameter.UebergabeParameter Heute ist es ganz schön kalt.
```

tada... ganz einfach


----------



## Cyston (4. Apr 2011)

hartzie hat gesagt.:


> ```
> #! /bin/sh
> # Start der Java-Applikation UebergabeParameter
> echo Aufruf ohne Parameter
> ...




klar ganz einfach  

ich hab nicht mal gewusst, dass man die bat.datei in linux bash nennt 

aber thx aufjedenfall für die schnelle antwort.. bin in diesem forum mittlerweile nichts anderes gewohnt.:toll:

Edit:
ich habs nun versucht über das terminal anzusprechen. leider kein erfolg. gespeichert habe ich es mit dem namen UebergabeParameter.sh unter UebergabeParameter/bin . im selben ordner befindet sich ein unterordner wo schliesslich die classfile drinnen ist.

ich hab in Ubuntu-Foren bereits nachgesehen und bekam als Rückmeldung:
nohup filename
sh filename
bash filename

keins der 3 hat funktioniert. muss ich die datei wo anders speichern? seltsamerweise wenn ich die parameter manuell eingebe funktioniert es undd ich gebe sie auch im verzeichnis ein die auch in der bash.file angegeben ist.


----------



## hartzie (4. Apr 2011)

sag doch mal was du unter "kein Erfolg" verstehst? Kommt eine Java Fehlermeldung oder gibt er dir einfach keine Rückmeldung?


----------



## Cyston (4. Apr 2011)

hartzie hat gesagt.:


> sag doch mal was du unter "kein Erfolg" verstehst? Kommt eine Java Fehlermeldung oder gibt er dir einfach keine Rückmeldung?



sry das hatte noch gefehlt:

hier ein screenshot. ich habs mit 2 endungen probiert (vor jeder eingabe natürlich vorher den dateinamen geändert).

hoffe ihr habt ne lösung.

thx, leon


----------



## hartzie (4. Apr 2011)

zeig mal deine bash datei. das sieht mir so aus als hättest du was vergessen


----------



## madboy (4. Apr 2011)

Die auszuführende Datei heißt 
	
	
	
	





```
UebergabeParameter.bash
```
, du versuchst aber 
	
	
	
	





```
UebergabeParameter
```
 auszuführen.
Versuche es mal so: 
	
	
	
	





```
bash UebergabeParameter.bash
```

Am Rande: Normalerweise habe Shellscripte, also das was du machst, die Endung .sh. Dem Betriebssystem bzw. der Bash ist das aber egal, du kannst sie auch .Karlheinz nennen wenn du willst. Nur musst der komplette Dateiname inklusive Groß- und Kleinschreibung passen.


----------



## Haave (5. Apr 2011)

Cyston hat gesagt.:


> ich hab nicht mal gewusst, dass man die bat.datei in linux bash nennt


Tut man auch nicht, man nennt es Shell-Skript. Bash steht für Bourne Again Shell und ist nur eine der vielen Shell-Geschmacksrichtungen, die es unter Linux gibt. Andere Beispiele: ksh (Korn Shell), csh (C Shell), tcsh …
Siehe auch hier: Wikipedia: Unix shells

Bezüglich der Endung siehe Kommentar von madboy:


madboy hat gesagt.:


> Am Rande: Normalerweise habe Shellscripte, also das was du machst, die Endung .sh.


----------



## HoaX (5. Apr 2011)

hartzie hat gesagt.:


> ```
> #! /bin/sh
> ```
> 
> tada... ganz einfach



Richtig ists ohne das Leerzeichen nach dem #!, also direkt

```
#!/bin/sh
```


----------



## Cyston (5. Apr 2011)

madboy hat gesagt.:


> Die auszuführende Datei heißt
> 
> 
> 
> ...



Daran lag der Fehler. Unter Windows reichte es nämlich einfach im Verzeichnes den Datei-Namen einzugeben. Vielen Dank auch für die kleinen Nebeninfos.

:toll:


----------

