Es gibt eine einfachere und effizientere Möglichkeit, die native Funktion zum Entfernen von Shell-Präfixen / Suffixen zu verwenden:
temp="${opt%\"}"
temp="${temp#\"}"
echo "$temp"
${opt%\"}
entfernt das Suffix "
(mit einem Backslash versehen, um die Interpretation der Shell zu verhindern).
${temp#\"}
entfernt das Präfix "
(mit einem Backslash versehen, um eine Shell-Interpretation zu verhindern).
Ein weiterer Vorteil besteht darin, dass umgebende Anführungszeichen nur entfernt werden, wenn umgebende Anführungszeichen vorhanden sind.
Übrigens entfernt Ihre Lösung immer das erste und das letzte Zeichen, egal wie sie aussehen (natürlich bin ich sicher, dass Sie Ihre Daten kennen, aber es ist immer besser, sicher zu sein, was Sie entfernen).
Mit sed:
echo "$opt" | sed -e 's/^"//' -e 's/"$//'
(Verbesserte Version, wie von jfgagne angezeigt, Echo loswerden)
sed -e 's/^"//' -e 's/"$//' <<<"$opt"
Es ersetzt also eine Führung "
durch nichts und eine Spur "
durch nichts. Im selben Aufruf (es ist nicht erforderlich, ein anderes Sed weiterzuleiten und zu starten. Mit können -e
Sie mehrere Textverarbeitungen durchführen).
sed "s/^\(\"\)\(.*\)\1\$/\2/g" <<<"$opt"
. Diese Syntax entfernt Qoutes nur, wenn ein übereinstimmendes Paar vorhanden ist.