Bash-Skript: Übergeben einer Variablen an ein Bash-Skript, die Anführungszeichen, einfache Anführungszeichen usw. enthält

Bash-Skript: Übergeben einer Variablen an ein Bash-Skript, die Anführungszeichen, einfache Anführungszeichen usw. enthält

nehmen wir an, dies ist die Zeichenfolge:

   'a',"b"

es enthält sowohl einfache als auch doppelte Anführungszeichen.

wie würden Sie dies als einzelne Zeichenfolge an ein Bash-Skript übergeben?

Dies ist das Bash-Skript:

#!/bin/bash
echo $1

es muss widerhallen

'a',"b"

aber wir können nicht davon ausgehen, dass die Zeichenfolge so klein ist. Letztendlich habe ich vor, das Ganze zu senden

 /etc/httpd/conf/httpd.conf

als Zeichenfolge zu diesem Bash-Skript.

daher kann ich Anführungszeichen und einfache Anführungszeichen nicht wirklich einzeln entkommen.

Antwort1

Sie könnenBefehlsersetzung:

oo.sh "$(cat /etc/httpd/conf/httpd.conf)"

Dies wird ausgeführt cat /etc/httpd/conf/httpd.confund die Ausgabe (der Inhalt der Datei) wird in das erste an übergebene Argument eingefügt oo.sh. Es ist in Anführungszeichen gesetzt, sodass es als einzelnes Argument übergeben wird – Leerzeichen und Sonderzeichen werden unverändert durchgelassen. oo.sherhält ein einzelnes Argument.


Generell könnte es jedoch besser sein, wenn möglich den Dateinamen an das Skript zu übergeben oder den Dateiinhalt als Standardeingabe ( oo.sh < /etc/httpd/conf/httpd.conf) anzugeben. Abgesehen davon, dass es standardmäßiger ist, gibt es eine maximale Länge, die alle Befehlszeilenargumente zusammen haben können, und eine Datei kann länger sein. Selbst wenn es jetzt funktioniert, wird die Übergabe des Ganzen als Argument irgendwann nicht mehr funktionieren, wenn die Datei mit der Zeit größer wird und der Fehler „Argumentliste zu lang“ auftritt.

Sie können dieses Limit mit finden getconf ARG_MAX. Die Größe variiert erheblich: Ich habe hier Systeme mit 2 MB-Limits und 256 KB-Limits. Wenn Ihre Datei immer klein sein wird, brauchen Sie sich keine Sorgen zu machen, aber andernfalls sollten Sie versuchen, die Daten auf eine andere Weise in das Skript zu bekommen.

verwandte Informationen