我.command
在 Mac 服务器上设置了一个非常小的文件,基本上只是用来启动 Python 进程。对于其他人来说,这比打开终端、输入“python”然后拖动文件更直观。
但是这也要求我先更改目录,因为脚本将对服务器上的文件进行操作,并且需要从它包含的同一目录进行操作。问题是,由于服务器的设置方式,需要使用此功能的两个人对文件的路径不同。
由于我无法将服务器更改为具有相同的路径,因此我尝试使用cd
命令两个都路径,这似乎确实有效。由于一条路径始终不存在,而另一条路径将存在,因此一条命令失败,而另一条命令运行。
cd /Volumes/Server/scripts/Script
cd /Volumes/Macintosh\ HD2/Server/Scripts/Script
python Process.py
这将给我这样的答复:
/Volumes/Server/scripts/Script ; exit;
/Volumes/Macintosh\ HD2/Server/Scripts/Script: line 2: cd: /Volumes/Macintosh\ HD2/Server/Scripts/Script: No such file or directory
### My script runs here with the correct path ###
这似乎可行,但我知道,如果出于某种原因,一个人将这两条路径都视为有效路径,我就会遇到麻烦。我也不知道这是否会导致其他问题。即使错误看起来悄无声息地过去了,我也不能确定它们永远不会造成问题。所以我的问题有两个部分,以这种方式使用命令有什么缺点,以及是否有更好的方法来设置这个.command
文件?
答案1
在尝试进入某些目录之前,我会使用一些逻辑来确定它们是否存在:
if [ -d "$DIRECTORY" ]; then
# Control will enter here if $DIRECTORY exists.
fi
(看https://stackoverflow.com/questions/59838/check-if-a-directory-exists-in-a-shell-script)
这样,您可以控制当一个目录存在、两个目录存在或两个目录都不存在时的行为。