所以我正在编写一个脚本,该脚本应该使用(bash)-x检查软件包是否具有现有路径,并相应地回显消息。如何在函数中正确实现条件?
我真的超出了我的选择范围。
#!/bin/bash
exists() {
if [[ -x $(type -P "$1" 1>hra 2>/dev/null) ]]; then
return 0
else
return 1
fi
}
read key | exists
if [ "$?" -eq 0 ] ; then
echo $(cat hra) | echo $(awk -F "/" '{print $NF}' ) "is installed"
else
echo $(cat hra) " needs to be installed"
fi
如果路径存在并且是可执行的,我希望[[ -x $(type -P "$1" 1>hra 2>/dev/null) ]]
行是正确的,但是该函数始终返回1。
答案 0 :(得分:1)
您的代码中有很多问题!还不够吗?
#!/bin/bash
read -r key
if type -aP "$key"; then
echo "$key is installed"
else
echo "$key needs to be installed"
fi
答案 1 :(得分:0)
对于记录,可以的,您可以将带有[[
标志的-x
用作要由if
执行的命令。做您似乎要尝试的语法的样子类似
# Putting this in a function is silly, but whatever
exists () {
[[ -x "$1" ]]
}
read -p "Type in a command:" key
path=$(type -P "$key")
if exists "$path"; then
echo "${path##*/} is installed"
else
# $path will be empty, I guess you mean $key?
echo "need to install $path"
fi