Ich versuche, Daten entweder aus einer Datei oder von der Benutzereingabe einzulesen, um es in einem Bash-Shell-Skript zu verarbeiten. Ich bin sehr neu und ich habe diesen Code so weit, wenn das Skript eine Datei als Argument akzeptiert. Wenn ich versuche, eine neue Datei zu erstellen, die ich die Eingaben des Benutzers lesen und verarbeiten kann, löst es einen Fehler aus: $ datafilepath mehrdeutige Umleitung. Ich fühle mich sehr nahe dran, aber vielleicht fehlt mir eine gute Syntax. Kann mich jemand in die richtige Richtung drängen? Vielen Dank!Umleitung stdin wirft ambigous redirect error
#!/bin/bash
if [ "$#" = "1" ]
then
cat >>"$datafilepath"
elif [ "$#" = "2" ]
then
datafilepath=$2
fi
echo Average Median
while read myLine
do
sum=0
med=0
for word in $myLine
do
sum=`expr $sum + $word`
echo -e $word >> medfile
done
sort <medfile>sorted
cat sorted | tr '\n' '\t' > rowfile
printf "%.0f\t%.0f\n" $(echo "scale=2; $sum/5" | bc) $(cut -d' ' -f3 rowfile)
rm -f medfile
rm -f sorted
rm -f rowfile
done <$datafilepath
"mehrdeutig Umleitung" bedeutet '$ datafilepath' leer. (letzte Zeile des Skripts) – jandob
In der zweiten Zeile 'set -x' einfügen und das Skript erneut ausführen. Bash wird die Debugausgabe ausgeben. –
@jandob Danke für den Hinweis! Wie kommt es, ist es leer, wenn ich Katze >> verwende, so dass es die Benutzereingaben nehmen kann? –