Shell脚本编程:使用变量定义路径

52

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

据我理解,变量允许我存储一个值(在这种情况下为字符串),并在代码中稍后调用它。因此,如果我想要一个保存路径的变量,我可以像这样存储它:

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

//Later on in the script//
cd $SPTH
./script1

我的目标是设置路径到变量SPTH,但可能使用了错误的语法。

然后我使用带参数$SPTHcd命令。

理想情况下,这将允许我在那里运行文件而无需键入路径。 但它不起作用。结果就像仅使用cd一样,忽略了$SPTH

那么我做错了什么?有什么方法可以做到这一点吗?


5
如果我记得没错的话,你在使用"="符号时不会加上空格。 - Jim H.
2个回答

119

不要使用空格...

(错误的做法)

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

(正确)

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

1
非常感谢!现在运行得很好,我得记住这个。 - Nonameghost
5
如果路径中有空格,该怎么办? - Eatdoku
9
当在脚本中使用SPTH并且其值包含空格时,需要用双引号将变量括起来。例如:cd "$SPTH" - Web User
3
这个能不能不用CD运行?我在想是不是用command $SPTH,但这样似乎有些冒险。也许我需要将路径变成变量,但脚本名硬编码?比如说 command $SPTH/somescript.sh - redfox05

5
为了补充上面的正确答案: 对于我的情况,在shell中,这段代码有效(针对 sqoop
ROOT_PATH="path/to/the/folder"
--options-file  $ROOT_PATH/query.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接