bash命令`cd / usr / local / src`(包括反引号)无效

时间:2014-10-16 15:39:28

标签: bash

我是bash的新手,所以我不知道这个问题出现在哪里。 但是,我有这个脚本,它应该只是改变cd,下载一个tar文件并提取它。 我正在从/home/

应用此命令
#!/bin/bash
`cd /usr/local/src`
`wget http://nginx.org/download/nginx-1.6.2.tar.gz -O nginx-1.6.2.tar.gz`
`tar -xzf  nginx-1.6.2.tar.gz`

因此,下载tar文件并在家中提取,而不是在/usr/local/src

我已经读过这可能是cd命令的问题,但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

经过编辑,您的脚本现在说您正在运行

#!/bin/bash
`cd /usr/local/src`
`wget http://nginx.org/download/nginx-1.6.2.tar.gz -O nginx-1.6.2.tar.gz`
`tar -xzf  nginx-1.6.2.tar.gz`

反引号导致每个命令在子shell中运行;并且每个子shell的输出都要读取,字符串拆分,并作为第二个命令运行。

另外,由于cd位于子壳中,因此其效果不会延续到主壳。


所以:删除反引号(并确保在cd失败时退出脚本;我这里使用-e标志执行此操作)。你应该只运行:

#!/bin/bash -e
cd /usr/local/src
wget http://nginx.org/download/nginx-1.6.2.tar.gz -O nginx-1.6.2.tar.gz
tar -xzf  nginx-1.6.2.tar.gz

...也就是说:你的命令不能以'字符开头和结尾。