bash条件表达式-x可以视为if条件吗?

时间:2019-02-07 09:51:43

标签: linux bash

所以我正在编写一个脚本,该脚本应该使用(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。

2 个答案:

答案 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