En Terminal, ¿cómo puedo configurar una nueva variable y asignarle un valor? Digamos que quiero comparar dos archivos con nombres de archivo largos y luego también realizar algunas otras operaciones. Debido a los nombres de archivo largos, me gustaría crear dos variables, asignar un valor a cada variable y utilizarla como marcador de posición. Necesito algo como lo siguiente:
set var1 = 'long-file-name1'
set var2 = 'long-file-name2'
diff var1 var2
Respuesta1
El pseudocódigo (o código para algún otro shell o lenguaje de programación) en su pregunta se traduce en los siguientes comandos Bash:
var1='long-file-name1'
var2='long-file-name2'
diff "$var1" "$var2"
La sintaxis $var1
esexpansión de parámetros. Esto reemplaza la variable var1
con su valor, en este caso, con el nombre del archivo almacenado en ella. Activadores de expansión de parámetros sin comillasdivisión de palabras(también llamado "división de campo") yglobo(también llamado "expansión de nombre de archivo" y "expansión de nombre de ruta"). Por lo general, no desea que se produzcan esas expansiones adicionales.Excepto cuando sabes específicamente que los quieres., deberíaasegúrese de adjuntartodas las apariciones de expansión de parámetros endoble comillas. (Comillas simplesson aún más poderosos: también evitarían que se produzca la expansión de parámetros).
Eso ejecuta el diff
comando con el nombre de archivo almacenado var1
como primer argumento de línea de comando y el nombre de archivo almacenado var2
como segundo argumento de línea de comando.Esto hace diff
que se compare el contenido de los archivos., como pretendes, tal como lo harías si hubieras ejecutado:
diff 'long-file-name-1' 'long-file-name-2'
Notarás que no he usado el export
comando.Esto se debe a que, en este caso, el export
comando esni necesario ni apropiadopor lo que estás haciendo. Cuando el valor de una variable sólo necesita expandirse en su shell, y noaccedido por programas iniciados desde su shell--entonces no necesitas (ni deberías) usar export
.
Si su sistema tuviera un diff
comando extraño que lea nombres de archivos de variables de entorno llamadas var1
y var2
en lugar de tomar nombres de archivos como argumentos de línea de comandos, entonces necesitaría exportar sus variables. Pero no es así como diff
funciona. El diff
comando no accede a sus variables y no sabe nada sobre ellas. El shell los está expandiendo para producir los argumentos a los que luego pasa diff
.
Respuesta2
Puede almacenar el nombre del archivo en una variable en bash simplemente asignándolo
Por ejemplo:variable=filename && variable2=filename2
luego puedes usar diff
los dos archivos usando esas variables como esta
diff $variable $variable2
NB: si los nombres de los archivos tienen espacios, es mejor poner comillas dobles tanto en los nombres de los archivos como en las variables, especialmente al realizar operaciones con ellos.