Es un truco para asegurarse de no obtener una cadena vacía en la sustitución si una de las variables está vacía. Al poner x
en ambos lados, es lo mismo que simplemente comparar las variables directamente, pero las dos partes siempre estarán no vacías.
Es un viejo kludge que hizo más sentido cuando guiones fueron escritos como:
if [ x$USER != x$RUN_AS_USER ]
No si usted acaba de tener $USER
y estuviera vacío, entonces podría terminar con
if [ != root ] # Syntax error
Con el x
obtienes esto, que es mejor:
if [ x != xroot ]
Sin embargo, cuando se citan las variables, no es necesario x
, ya que una cadena vacía entre comillas no se elimina por completo. Todavía aparece como un token. Por lo tanto,
if [ "$USER" != "$RUN_AS_USER" ] # Best
es la mejor manera de escribir esto. En el peor de los casos con ambas variables se vacían se obtendría esta que es una declaración válida:
if [ "" != "" ]
Ya se ha preguntado y respondido (incluso varias veces, supongo) – soulmerge
@soulmerge: enlaces –
El enlace está visible para aquellos que pueden cerrar preguntas. Los publicaré junto con el comentario a partir de ahora: http://stackoverflow.com/questions/1398994/shell-script-test – soulmerge