我是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
命令的问题,但我不知道如何解决这个问题。
答案 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
...也就是说:你的命令不能以'字符开头和结尾。