繁体   English   中英

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

[英]Bash script change working directory to the directory it is in

我读了 Bash 脚本可以告诉它存储在哪个目录中吗? ,它表明我可以通过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}

你需要写

cd "$DIR"

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

对于它的价值,我一直在寻找关于如何通过 crontab schedule 安排具有特定工作目录的命令的解决方案。

我找到了一种与env一起完成的方法。

env -C workdir - command args

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM