Wie Sie schreiben, und passen reguläre Ausdrücke in /bin/sh-Skript?
Schreibe ich ein shell-Skript für eine begrenzte unix-basiert microkernel, die nicht über die bash! die /bin/sh nicht ausführen können, die folgenden Zeilen für einige Gründe.
if [[ `uname` =~ (QNX|qnx) ]]; then
read -p "what is the dev prefix to use? " dev_prefix
if [[ $dev_prefix =~ ^[a-z0-9_-]+@[a-z0-9_-"."]+:.*$ ]]; then
Für die 1. und 3. Linien, er beschwert sich über die fehlende expression-operator, und für die 2. Zeile heißt es nicht coprocess! Kann jemand Aufschluss auf Unterschiede zwischen /bin/bash und /bin/sh-Skripte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dieses Skript entspricht in
/bin/sh
:printf
überecho -n
, die nicht dem standard entsprechen.if [[ -n $1 ]]; then
in sh?if [ -n "$1" ]
im/bin/sh
-
sollte auch das doppelte wie folgt zitiert:'^[a-z0-9_"-"]+@[a-z0-9_"-."]+:'
'^[-a-z0-9_-]+@[-a-z0-9_.]+:'
Hier ist eine Methode, um zu sehen, was nicht-Posix-Funktionen sind in einem Skript:
Kopieren/Einfügen in shellcheck.net:
Installieren oder shellcheck lokal, und führen Sie
shellcheck ./check.sh
,und es hebt die nicht-posix-Funktionen:
Haben Sie entweder zu reqwrite die Ausdrücke, die als Einheiten (nicht realistisch), oder verwenden Sie externe Kommandos (grep/awk), ein, erklärt von @anubhava