Ich versuche, ein Array aus einer Zeichenfolge zu erstellen, die eine semantische Versionsbeschränkung enthält, die aus einem (n optionalen) Vergleichsoperator (z. B. ~>
), einem Leerzeichen und einer Versionsnummer (z 1.0.0). Ich möchte ein Array aus dieser Zeichenfolge erstellen, wobei das Element [0] den Vergleichsoperator und das Element [1] die Version enthält (oder wenn es keinen Vergleichsoperator gibt, ein einzelnes Elementarray, das die Version bei Element [0 enthält ]).Bash-Array aus Variable, die Metazeichen enthält
Wunscher, wobei die Eingabezeichenfolge ist~> 1.0.0
:
$ echo ${array[@]}
~> 1.0.0
$ echo ${array[0]}
~>
$ echo ${array[1]}
1.0.0
Aber ich bin ein Problem mit dem Array zu schaffen, weil der Vergleichsoperator kann Metazeichen enthalten (z >
von meinem Beispiel).
Hier ist, wie ich in der Regel würde es tun. Dies funktioniert:
$ array=(== 1.0.0)
$ echo ${array[@]}
== 1.0.0
$ echo ${array[0]}
==
$ echo ${array[1]}
1.0.0
jedoch diese nicht funktionieren:
$ array=(~> 1.0.0)
-bash: syntax error near unexpected token `>'
$ array=("~> 1.0.0")
$ echo ${array[@]}
~> 1.0.0
$ echo ${array[0]}
~> 1.0.0
$ echo ${array[1]}
Ich weiß, dass die folgenden würde Arbeit, aber ich kann leider nicht meine Eingabezeichenfolge ändern, um den Vergleich zu zitieren Bediener:
$ array=("~>" 1.0.0)
$ echo ${array[@]}
~> 1.0.0
$ echo ${array[0]}
~>
$ echo ${array[1]}
1.0.0
Wie kann Ich erstelle ein Array von dieser Eingabezeichenfolge, ohne es zu ändern?