verificar texto scripts script programas manejo existe ejemplos directorio cadenas buscar archivos archivo bash shell unix

texto - scripts bash ejemplos



"~/Desktop/test.txt: ningĂșn archivo o directorio" (2)

He escrito este guion:

#!/bin/bash file="~/Desktop/test.txt" echo "TESTING" > $file

El script no funciona; me da este error:

./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory

¿Qué estoy haciendo mal?


FYI, también puedes usar eval :

eval "echo "TESTING" > $file"

El eval toma el comando como argumento y hace que el shell haga la expansión de Tilde .


Intenta reemplazar ~ con $HOME . La expansión de Tilde solo ocurre cuando la tilde no está citada. Ver info "(bash) Tilde Expansion" .

También podría hacer file=~/Desktop sin citarlo, pero si alguna vez reemplaza parte de esto con algo con un separador de campo, entonces se romperá. Citar los valores de las variables es probablemente una buena cosa para acostumbrarse de todos modos. Citar file=~/"Desktop" variables file=~/"Desktop" también funcionará, pero creo que es bastante feo.

Otra razón para preferir $HOME , cuando sea posible: la expansión de tilde solo ocurre al comienzo de las palabras. Así que el command --option=~/foo solo funcionará si el command realiza la expansión tilde, que variará según el comando, mientras que el command --option="$HOME/foo" siempre funcionará.