Shell Scripting:使用变量定义路径

Non*_*ost 34 variables bash shell path

我的问题在于我对shell变量的困惑.

根据我的理解,变量允许我存储一个值(在这种情况下为String)并在我的代码中稍后调用它.因此,如果我想拥有一个包含某些脚本集的路径变量,我可以理想地将它存储为:

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

//Later on in the script//
cd $SPTH
./script1
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的,可能是错误的语法,是设置变量SPTH的路径.

然后我用cd论证$SPTH.

理想情况下,这将允许我在那里运行文件而无需在路径中输入.但它不起作用.该$SPTH被忽略,结果是,如果cd是单独使用.

那么我做错了什么?什么是这样做的方法?

Web*_*ser 80

不要使用空格......

(不正确的)

SPTH = '/home/Foo/Documents/Programs/ShellScripts/Butler'
Run Code Online (Sandbox Code Playgroud)

(正确)

SPTH='/home/Foo/Documents/Programs/ShellScripts/Butler'
Run Code Online (Sandbox Code Playgroud)

  • @Eatdoku在脚本中使用`SPTH`并且其值有空格,然后用双引号括起变量.例如`cd"$ SPTH"` (7认同)
  • 如果路径中有空间怎么办? (4认同)
  • 无需CD就能运行吗?我在想`command $ SPTH`,但这似乎有点冒险。也许我需要更改路径,但是对脚本名称进行硬编码?命令$ SPTH / somescript.sh (2认同)

小智 6

添加到上面的正确答案:-对于我在 shell 中的情况,这段代码有效(正在处理sqoop

ROOT_PATH="path/to/the/folder"
--options-file  $ROOT_PATH/query.txt
Run Code Online (Sandbox Code Playgroud)