linux - Bash 脚本将工作目录更改为它所在的目录

标签 linux bash shell

我读了Can a Bash script tell what directory it's stored in? ,它显示我可以通过 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")"&& pwd )" 获取脚本目录。

我发现我可以使用 cd 命令来更改工作目录。

这是import.sh的内容。它位于/Users/gqqnbig/SourceCode/Java/PlayerStatisticReader/bin

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

cd DIR

java -cp .;jsoup-1.7.3.jar;mysql-connector-java-5.1.29-bin.jar globalVisionEntertainment.nba.Program %1

这是我执行脚本后得到的。

Macintosh:PlayerStatisticReader gqqnbig$ pwd
/Users/gqqnbig/SourceCode/Java/PlayerStatisticReader
Macintosh:PlayerStatisticReader gqqnbig$ bin/import.sh 
: command not found 2: 
: No such file or directoryDIR
: command not found 4: 

我在 Macintosh 的默认终端中执行它。

为什么找不到命令?我怎样才能让它发挥作用?

最佳答案

你需要写

cd "$DIR"

严格来说,你只需要加上美元,但你也应该引用路径,因为它可能包含空格。至于命令未找到消息;我不知道。您可以删除空行。我的猜测是这是一个编码问题。如果将脚本直接粘贴到终端而不是运行文件,是否会得到“找不到命令”输出?

关于linux - Bash 脚本将工作目录更改为它所在的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22388755/

相关文章:

linux - 缓存一致性及其解决方案

linux - Amazon Linux 上的 SSLSetup : SSL Error, 提供了多个证书

linux - 使用 bc 处理多个数据源

perl - 有没有像 Perl 的 IPython/IRB 之类的东西?

linux - cron 作业的两个参数 - 开始时间和结束时间应该涵盖一整天

linux - 什么是方便的 LINUX PATH 编辑器?

c - Linux C 上的 HINTERNET InternetOpenUrl()

linux - 为什么在 bash 脚本中查找匹配的 `"' 错误时会出现语法错误和意外的 EOF?

bash - 使用 $(...) 获取子命令的错误代码

bash - 将一条长线作为多条线进行管道传输