如果有人能解释我代码的这部分内容,我会很高兴
[ -n "${0%/*}" ] && cd ${0%/*}
. ./environment.sh
. ./readParams.sh
我了解此脚本正在阅读./enviroment.sh
和./readparams.sh
但我真的很难理解代码的第一行是什么。所以我可以理解这之后的整个过程。
如果你能给我一个网站或任何能帮助我理解这种语法的东西,我会很高兴的。我是shell脚本的初学者,所以感谢任何帮助。
答案 0 :(得分:5)
这是一个shell脚本,而不是python。
[ -n "${0%/*}" ] && cd ${0%/*}
将当前工作目录更改为shell脚本所在的目录。
. ./environment.sh
. ./readParams.sh
这是两个列出的shell脚本的源代码,可以存储在与被调用脚本相同的目录中。
要分解第一行,$0
将包含命令的第一个参数,即被调用的脚本。 ${0%/*}
执行parameter substitution删除尾随部分(从上一个/
开始),这样就可以有效地为您提供目录名称。
[ -n "${0%/*}" ]
转换为“如果"${0%/*}"
导致字符串非空”。
整行因此转换为“如果执行的脚本以路径为前缀,则cd
为该目录”。
P.S。我不相信这是实现这一目标的最佳方式,但这几乎就是它的作用。就个人而言,我会选择更具可读性的cd $(dirname "$0")
,或者对于更强大的解决方案,请参阅Getting the source directory of a Bash script from within。
答案 1 :(得分:1)
首先,这根本不是python,甚至不是关闭!
[ -n "${0%/*}" ] && cd ${0%/*}
它使用参数扩展,你可以用bash来看它。
基本上,它是脚本所在目录的cd
。例如:
如果您的脚本位于:
/foo/bar/baz/xxx.sh
以上行cd /foo/bar/baz
文件:
environment.sh
readParams.sh
位于xxx.sh