C'est un truc pour s'assurer que vous n'obtenez pas une chaîne vide dans la substitution si l'une des variables est vide. En mettant x
des deux côtés, cela revient à comparer directement les variables, mais les deux côtés seront toujours non vides.
Il est un vieux bidouille qui a fait plus de sens quand les scripts ont été écrits comme:
if [ x$USER != x$RUN_AS_USER ]
Il si vous aviez juste $USER
et il était vide alors vous pourriez finir avec
if [ != root ] # Syntax error
Avec la x
vous obtenez ce qui est mieux:
if [ x != xroot ]
Cependant, lorsque les variables sont citées, le x
est inutile car une chaîne vide entre guillemets n'est pas entièrement supprimée. Il apparaît toujours comme un jeton. Ainsi,
if [ "$USER" != "$RUN_AS_USER" ] # Best
est la meilleure façon d'écrire ceci. Dans le pire des cas avec les deux variables vide, vous obtiendrez ce qui est une déclaration valide:
if [ "" != "" ]
A déjà été demandé et répondu (même plusieurs fois, je suppose) – soulmerge
@soulmerge: liens s'il vous plaît –
Le lien est visible pour ceux qui peuvent fermer des questions. Je les posterai avec le commentaire à partir de maintenant: http://stackoverflow.com/questions/1398994/shell-script-test – soulmerge