Shell Komando in Shell Script nicht ausführen

anti43

nicht mehr wegzudenken
Hi,

Weiss hier zufällig jemand wie ich Ant dazu bekomme das folgende nicht zu tun:

cat > datei.sh <<EOF
#!/bin/bash
rm -rf .
EOF

Das rm soll natürlich NICHT ausgeführt werden, sondern nur als Text in der Datei datei.sh erscheinen..

Danke,

Andreas
 
Falls ich das richtig verstanden habe, dann ersetze
rm -rf . durch echo rm -rf .>>datei.sh
 
hm ok aber "bin/bash" und die nachfolgenden (hier nicht aufgeführten zeilen :) müssen auch mit in die Datei :)
 
Na dann, genau das selbe. Beispiel:
Code:
cat > datei.sh <<EOF
echo #!/bin/bash>>datei.sh
echo rm -rf .>>datei.sh
echo undsoweiter>>datei.sh
...
;)

Gruß
Norbert
 
:) nö, eigentlich macht man mit

cat > datei.sh <<EOF

alles nachfolgende bis "EOF" in die Datei- aber leider geht auch das so nicht:


ot:
cat > ff.sh <<EOF
echo #!/bin/bash
echo JAVADIR=/usr/java
echo IFS=$'\n'
echo potential_java_dirs=(`ls -1 "$JAVADIR" | sort | tac`)
echo IFS=
echo for D in "${potential_java_dirs[@]}"; do
echo if [[ -d "$JAVADIR/$D" && -x "$JAVADIR/$D/bin/java" ]]; then
echo JAVA_PROGRAM_DIR="$JAVADIR/$D/bin/"
echo echo $MSG2 $JAVA_PROGRAM_DIR
echo if check_version ; then
echo return 0
echo else
echo return 1
echo fi
echo fi
echo done
echo echo $MSG8 "${JAVADIR}/" $MSG9 ; echo $MSG4
echo return 1
echo }
EOF


Ergebnis: Eine Datei, die folgendes enthält:

echo #!/bin/bash
echo JAVADIR=/usr/java
echo IFS=$'\n'
echo potential_java_dirs=()
echo IFS=
echo for D in ""; do
echo if [[ -d "/" && -x "//bin/java" ]]; then
echo JAVA_PROGRAM_DIR="//bin/"
echo echo
echo if check_version ; then
echo return 0
echo else
echo return 1
echo fi
echo fi
echo done
echo echo "/" ; echo
echo return 1
echo }
 
Schade, dann musst Du es halt auf die umständliche Art machen und am Ende jeder Zeile noch die Umleitung ">> datei.sh" mit dranhängen und das cat > datei.sh <<EOF weglassen.

edit:
Ahh, Deinen zweiten Teil sehe ich jetzt erst. Es geht also wohl doch mit cat...
In dem Fall muss einfach das "echo " wieder rausgenommen werden, denke ich.

Ohne Rechner-Neustart und dem Booten von Linux zum Nachschauen kann ich aber jetzt nicht genau sagen, ob das so auch stimmt.
 
Eigentlich sollte es halt ohne ECHO funktionieren - möglicherweise liegt es an ant .. ich hab jetzt alle bash Kommandos rausgenommen und greife auf ne Textdatei zurück die bereits existiert. Trotzdem Danke!

cat > $RPM_BUILD_ROOT%{install_dir}/mp/mpv%{Version}/misc/mp%{Version}.sh <<EOF
#!/bin/bash
java -jar %{install_dir}/mp/mpv%{Version}/MPV%{Version}.jar
EOF

geht anstandslos.
 
Oben