2012-01-21 11 views
23

Soy nuevo en Linux y he pasado los últimos días jugando con los scripts de Shell. Decidí comenzar simple. Estoy haciendo un programa "Butler" que proporciona una interfaz de usuario para el terminal cuando lo abro. Realmente solo para probar cosas.Shell Scripting: uso de una variable para definir una ruta

De todos modos, mi problema radica en mi confusión con las variables de shell. A mi entender, las variables me permiten almacenar un valor (String en este caso) y llamarlo más tarde en mi código.

Entonces, si quisiera tener una variable que contenga la larga ruta hacia algún conjunto de scripts, lo ideal sería que simplemente lo almacenara no?

Esto es lo que quiero decir:

SPTH = '/home/Foo/Documents/Programs/ShellScripts/Butler' 

//Later on in that script// 

cd $SPTH 
./script1 

Lo que estoy tratando de hacer, probablemente con la sintaxis incorrecta, es para establecer la ruta a SPTH.Later variable sobre la que nosotros "cd" y establezca la argumento como $ SPTH. Idealmente, esto me permitiría ejecutar el archivo sin escribir en la ruta.

Sin embargo, esto no funciona. Simplemente ignora el "$ SPTH" y trata el comando como "cd" solo.

Entonces, ¿qué estoy haciendo mal? ¿Y cuál sería una forma de hacer esto?

+5

Si no recuerdo mal, que no utilizan espacios que rodean los "= ". –

Respuesta

63

No utilice espacios ...

(incorrecta)

SPTH = '/home/Foo/Documents/Programs/ShellScripts/Butler' 

(correcta)

SPTH='/home/Foo/Documents/Programs/ShellScripts/Butler' 
+0

¡Muchas gracias! Ahora funciona como un amuleto, tendré que recordar esto. – Nonameghost

+4

¿Qué sucede si hay un espacio en la ruta – Eatdoku

+7

@Eatdoku cuando se usa 'SPTH' en su secuencia de comandos y su valor tiene un espacio, luego rodee la variable con comillas dobles. P.ej. 'cd" $ SPTH "' –

Cuestiones relacionadas