ich einen Bash-Skript habe, das richtig in meinem System läuft:Syntaxfehler in der Nähe von unerwartetem Token `<<<‘
uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux
Aber ich brauche es in einem Redhat 7.2 chroot zu arbeiten:
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 unknown
Derselbe Code wird auf der ersten korrekt ausgeführt, aber wenn er unter 7.2 ausgeführt wird, erkennt er zuerst nicht sed -i (nur das Argument -i). Kommentierte einige Linien y laufen in ein anderes Problem:
bash: command substitution: line 1: syntax error near unexpected token `<<<'
Die Sache ist, dass dieses Skript müssen in einem Remote-Rechner mit einem debian ausgeführt werden 7.2 (deshalb teste ich es in einer chroot mit dem gleichen Distro), also ist es keine Lösung, Module/Upgrades zu installieren, um es lauffähig zu machen.
Ein Beispielcode:
#!/bin/bash
...
count=0
while read line; do
if echo "$line" | grep -q ')'
then
((count++))
comas=`grep -o "," <<< "$line" | wc -l`
num=`grep -o "byRef" <<< "$line" | wc -l`
...
sed -i 's/shortInteger/int/g' "test.h"
Irgendwelche Ideen?
Danke.
Edit: Dies sind die Befehle, die mir Probleme verursachen:
comas = `grep -o "" < < < "$ line" | WC -l`
sed -i 's/Shortinteger/int/g' "test.h"
Edit 2:
GNU bash, Version 2.05.8 -> "hier string" (< < <) existiert nicht
grep (GNU grep) 2.4.2 -> Option -o nicht
GNU existiert sed Version 3.02 -> -i op tion existiert ich es mit dem folgenden ... nicht
Wenn Sie Zeilennummern in Ihrem Code auf Fehler zeigen, müssen Sie das vollständige Skript anzeigen, sonst ist es nutzlos. – Inian
@Inian Der Code ist zu lang, um hier gepostet zu werden, und ich sollte viele Worte ändern, um den Datenschutz zu wahren. Im Beispiel zeige ich die zwei Zeilen, die die Fehler werfen. Ich werde den Beitrag bearbeiten, um sie zu verstehen. – Joster
Sind Sie sicher, dass Ihre Chroot eine große Ähnlichkeit mit Ihrem Zielsystem hat? Das sieht so aus, als ob du etwas nicht wirklich bash verwendest und nicht wirklich ein sed, vielleicht eine busybox oder sowas? –