usa traduccion station rewards near shell

traduccion - se espera un operador unario en el script de shell al comparar un valor nulo con una cadena



shell usa price (2)

¿Por qué todas las personas quieren usar ''=='' en lugar de simple ''=''? ¡Es un mal hábito! Se usa solo en la expresión [[]]. Y en (()) también. ¡Pero puedes usar solo = también! Funciona bien en cualquier caso. Si usas números, no las cadenas, no utilices el parcelamiento de las cadenas y luego las compares como las cadenas, sino que compares los números. como eso

let -i i=5 # garantee that i is nubmber test $i -eq 5 && echo "$i is equal 5" || echo "$i not equal 5"

Es un partido mejor y más rápido. Soy experto en C / C ++, Java, JavaScript. Pero si uso bash nunca uso ''=='' en su lugar ''=''. ¿Por qué lo haces?

Tengo dos variables

var="" var1=abcd

Aquí está mi código de shell script

if [ $var == $var1 ]; then do something else do something fi

Si ejecuto este código me avisará

[: ==: unary operator expected

¿Como puedo resolver esto?


Dado que el valor de $var es la cadena vacía, esto:

if [ $var == $var1 ]; then

se expande a esto:

if [ == abcd ]; then

que es un error de sintaxis.

Necesitas citar los argumentos:

if [ "$var" == "$var1" ]; then

También puedes usar = lugar de == ; Esa es la sintaxis original, y es un poco más portátil.

Si está utilizando bash, puede usar la [[ sintaxis, que no requiere las comillas:

if [[ $var = $var1 ]]; then

Incluso entonces, no se pierde nada con citar la referencia de variable y agregar comillas:

if [[ "$var" = "$var1" ]]; then

podría salvar a un futuro lector un momento tratando de recordar si [[ ]] requiere.