对于某些shell脚本,我需要在变量中存储command -v foo
的输出。我正在检查系统上是否存在某些二进制文件。当我在终端中执行command -v foo
时,我得到一个输出,但是当我在shell脚本中执行command -v foo
时,我没有得到任何输出。
➜ tools git:(install-script) ✗ command -v node
/usr/local/bin/node
check_deps() {
declare -A deps
deps=( ['git']=`command -v git`
['gem']=`command -v gem`
['node']=$(command -v node))
# ['redis-server']=command -v redis-server
# ['postgres']=command -v psql
# ['sass']=command -v sass
# ['gulp']=command -v gulp
# ['bower']=command -v bower )
for each in ${!deps[@]};
do
echo $each ${deps[$each]}
done
}
check_deps
输出是:
node
git /usr/bin/git
gem /usr/bin/gem
[Finished in 0.0s]
发生了什么事?我该如何解决这个问题?
答案 0 :(得分:1)
我使用的Sublime Text有一个名为Bash Build系统的插件。基本上它给我一个没有/ usr / local / bin的文件,这个构建语法现在返回正确的command -v
输出:
{
"cmd" : ["bash", "$file"],
"selector" : "source.shell",
"osx": {
"path" : "$PATH:/usr/local/bin"
}
}