Información

6.0 gato eliminar

6.0 gato eliminar



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

6.0 gato eliminar foo / tmp / bar, cat / tmp / bar & gt, / tmp / foo

7.0 ./bar: No existe tal archivo o directorio

7.0 ./foo: No existe tal archivo o directorio

7.0 ./foo / tmp / bar: No existe tal archivo o directorio

7.0 ./bar / tmp / foo: No existe tal archivo o directorio

7.0 ./bar / tmp / foo / tmp / bar: No existe tal archivo o directorio

7.0

A:

El comportamiento que está viendo se debe a su uso de la función de globbing del shell. Si desea que el comando cat se comporte de la forma en que lo describe, debe hacer explícitamente una comparación global.

si ["$ a" = "$ (echo $ a | cut -f1 -d /)"], entonces

coincidencia de eco

demás

eco no coincide

fi

El comando de corte se utiliza para realizar una operación de globbing inicial.

$ echo "foo / bar" | cortar -f1 -d /

foo

$ echo "foo / bar" | cortar -f1 -d /

bar

La instrucción if luego funciona para hacer la comparación globbing y solo evalúa la expresión de shell si la globbing coincide.

En general, las comparaciones de globbing son un poco más difíciles de hacer en shell que en los lenguajes de programación más tradicionales (Python, Ruby, etc.), y es una buena idea comprobar si está utilizando las funciones de globbing de forma adecuada.

A:

Porque estás usando = not = ~ en la condición.

Cuando tu lo hagas

a = $ (echo $ a | corte -f1 -d /)

if ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

luego

coincidencia de eco

demás

eco no coincide

fi

Comparando así, a no es igual a $ (echo $ a | cut -f1 -d /) que no es igual a la cadena vacía debido al espacio.

Para arreglar esto puedes hacer

if ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

luego

coincidencia de eco

demás

eco no coincide

fi

A:

a = $ (echo $ a | corte -f1 -d /)

Debe usar comillas dobles alrededor del = y agregar] al final. Esto le daría lo que desea.

a = $ (echo $ a | corte -f1 -d /)

if ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

Si no agrega] al final de su secuencia de comandos, entonces ["bar" = "foo / bar"] se evaluará como verdadero, ya que piensa que "bar" = "foo /" es una expresión válida. La primera parte tampoco funcionará cuando agregue] al final. Necesita ser entre comillas dobles.

La forma más fácil de leer el valor de $ a (y su valor en cualquier punto del script) es usar una declaración de caso [y a.

a = $ (echo $ a | corte -f1 -d /)

caso $ a en

/ foo / bar /) echo "a es 'foo / bar'", a = '' ,,

*) echo "a no es 'foo / bar'", a = 'foo / bar' ,,

esac

if ["$ a" = "$ (echo $ a | cut -f1 -d /)"]

Esto toma el valor de $ ay lo verifica en un valor conocido. Entonces, esta declaración de caso devuelve $ a al valor conocido. Si el valor de $ a no es uno de los valores válidos, imprimirá el mensaje de error en la pantalla.

Al usar este método, no hay problemas con las comillas simples y dobles, y funcionará correctamente en todos los casos en los que su versión actual no funcione.

Otra forma más elegante de hacer esto es usar algunas extensiones GNU.

if [["$ a" = "$ (echo $ a | cut -f1 -d /)"]]

El comando [[se evalúa como verdadero si la cadena que se proporciona está vacía. Dado que la prueba se evalúa a la cadena vacía, y no al valor de $ a, esto es mucho más eficiente.


Ver el vídeo: 05 F250 Cat Delete Exhaust (Agosto 2022).

Video, Sitemap-Video, Sitemap-Videos