Warum sollte dieses Skript mit Bash auf Kali funktionieren, aber nicht mit Bash auf Xubuntu?

Warum sollte dieses Skript mit Bash auf Kali funktionieren, aber nicht mit Bash auf Xubuntu?

Ich habe ein Skript, das ich zu Hause auf einer virtuellen Kali-Maschine erstellt habe. Dort funktioniert es einwandfrei, aber jetzt arbeite ich an meiner Xubuntu-Installation und es funktioniert überhaupt nicht. Die genaue Shell, die ich über den Hilfebefehl verwende, ist GNU Bash Version 4.2.25. Ich bin nicht sicher, welche Shell ich zu Hause habe (ich nehme an, es ist die neueste Version). Ich gehe davon aus, dass die Shell, die ich hier bei der Arbeit habe, älter ist und daher einige der Dinge, die ich im Skript verwende, nicht unterstützt. Wenn ich es hier ausführe, druckt es die Kopf- und Fußzeile aus, aber nichts dazwischen. Jede Hilfe oder jeder Rat wäre willkommen.

#!/bin/bash

echo ""
echo "######## WHOIS: "$1

# Whois using the inputted parameter
whois $1 |\

# Remove EOL characters
tr -d '\015\032' |\

# Remove spaces
sed 's/^ *//' |\

# Remove unnecessary words from output
grep -v -e "@" -e "http://" -e "WHOIS" > temp.txt

# Display all of the date lines
egrep -i "ate: " temp.txt

# Remove the tmp file
rm -rf temp.txt

echo "------- DONE!"
echo ""

Antwort1

Ihre Kommentare und Leerzeilen zerstören die Pipe-Konnektivität. Verwenden Sie Folgendes:

#!/bin/bash

echo ""
echo "######## WHOIS: "$1

whois $1 |
tr -d '\015\032' |
sed 's/^ *//' |
grep -v -e "@" -e "http://" -e "WHOIS" |
egrep -i "ate: " 

echo "------- DONE!"
echo ""

Sie benötigen keine Zeilenfortsetzung, wenn sich die Pipe am Ende der Zeile befindet. Wenn Sie Ihre Kommentare möchten, platzieren Sie diese in einem Block über der Pipeline.

verwandte Informationen