
Ich habe einen kleinen Test durchgeführt, um alles in meiner .txt-Datei mit dem Namen „Portal“ wiederzugeben. Wenn ich im Terminal schreibe, möchte ich, dass das Skript alles mit dem eingegebenen Namen wiedergibt, aber ich zeige nur die erste Variable an.
input=$1
for portal in $(grep $input /etc/portals | sed '/^#/ d' | awk '{print $1, $2}');
do
echo -e "\e[1;32m "$portal" \e[0m";
exit 0
done
else
echo -e "\e[1;31m --> Wrong Input <-- \e[0m"
exit 1
done
fi
=============
Der Code funktioniert, aber es wird nur $1 gedruckt und nicht $2. WENN ich den Code ändere in: awk '{print $1 $2}', dann ist die Ausgabe $1$2 ohne Tabulatoren oder Leerzeichen zwischen den Variablen. ===================================
Wie kann ich die Variablen trennen, damit das Echo angezeigt wird:
test1 [Tabulator/Leertaste] test2
Antwort1
#!/bin/bash
# exit if input is empty.
[[ -z $1 ]] && exit 1
# Check in the file /etc/portals for
# the existens of the word "$1" and place
# first word in "$a" and rest in "$b".
while read -r a b; do
printf %s\\t%s\\n $a "$b"
done < <(grep -P "^(?!#).*$1" /etc/portals)