Как сравнить «abc» с abc в сценарии оболочки?

How could I keep the variable expansion double quoted, but still using the extracted value with a wildcard?

No pudiste 1 , y no quieres ; su comando funciona perfectamente bien sin ellos (y estoy bastante seguro de que también se señaló en una de las variantes eliminadas -anteriores de esta pregunta ).

$ mkdir phpMyAdmin-4.7.7-all-languages
$ pma=[pP][hH][pP][mM][yY][aA][dD][mM][iI][nN]
$ echo $pma
[pP][hH][pP][mM][yY][aA][dD][mM][iI][nN]
$ echo $pma*/
phpMyAdmin-4.7.7-all-languages/
$ mv $pma*/ phpmyadmin
$ ls
phpmyadmin

El objetivo de citar sus variables es asegurarse de que no ocurran shell globbing y field split . Esta vez realmente quieres que eso suceda, por lo que citar es contraproducente.

Vale la pena entender por qué existen estas directrices; no son reglas generales, y si no funcionan para usted, es posible que se encuentre en una situación en la que no se aplican. Esforzarse por "seguir las mejores prácticas sin excepciones" sin comprenderlas es totalmente erróneo.


Aparte de eso, esto:

I also understood that one cannot use a shell glob (wildcard(*)) right after a double quoted variable expansion.

no es cierto.

$ tmp=php
$ echo "$tmp"*
phpmyadmin

1 Usted podría usar eval, pero sería tan completamente inútil que no voy a continuar con eso.

-3
21.11.2018, 00:34
0 ответов

Теги

Похожие вопросы