Hier ist mein Bash-Skript, das eine Variable von PHP gesendet wird:
STRING1="/opt/lampp/htdocs/dev/img/$VAR1"
mv $STRING1 "/opt/lampp/htdocs/dev/newlocation/"
Aus irgendeinem Grund wird "\ r" am Ende von $ STRING1 platziert und die Datei kann nicht gefunden werden, da sie die Form "my_picture.jpg \ r" hat.
Jede Hilfe wird geschätzt!
Dies ist offensichtlich für andere Googler wie mich, nicht für die OP, da es schon mehr als 5 Jahre her ist. Aber auch diese Lösung gab es damals.
Sie können eine Bash-Ersetzung versuchen, um das größte Muster vom Ende des Strings zu entfernen, das wie $ {varname %% pattern} aussieht. Weitere Informationen finden Sie hier:
http://tldp.org/LDP/abs/html/string-manipulation.html
Es sollte schneller sein, als einen anderen Prozess wie tr zu erzeugen, um damit umzugehen.
Hier ist eine Referenz für den stark eingeschränkten Bash-Muster-Abgleich (es handelt sich nicht wirklich um einen regulären Ausdruck, sondern eher um einen "like" - oder "glob" -Ausdruck). Ich bin mir nicht sicher, warum der Wagenrücklauf in der Control-Klasse und nicht in der Whitespace-Klasse ist. In anderen Sprachen wird es als Leerraum betrachtet. Ohne die erweiterte Mustererkennung über ein "shopt -s extglob" zu aktivieren, gibt es keine Möglichkeit, ein einfaches Konstrukt wie "this char repeat 0 or more times" in bash anzugeben. Habe ich auch gefunden
.. zusätzlich zu
set -vx
zeigen / testen für den Wagenrücklauf.Ich bin auf dieses Problem gestoßen, als ich Cygwin-Bash gegen die Ausgabe der Standardversion (nicht Cygwin) von Python verwendet habe. Ich bin verwirrt, warum ich nicht mehr sehe, wie ich es lösen soll.
quelle