什么是||的等价物shell脚本中的JavaScript运算符?

时间:2015-06-03 14:30:42

标签: shell

我的Mac OS .bash_profile文件中有以下行:

alias server="clear && python -m SimpleHTTPServer \$(portdiscovery)"

其中portdiscovery是一个输出一个可用端口的简单程序。

我想有一个可选的port参数,当提供时会覆盖对portdiscovery的调用,类似这样的东西(不起作用):

alias server="clear && python -m SimpleHTTPServer $1 || \$(portdiscovery)"

我基本上需要JavaScript中||运算符的行为,例如:var port = userInput || portdiscovery()

有没有办法在shell脚本中执行此操作?如果使用单线程无法实现这一点,我怎样才能通过shell函数实现这一目标?

我的功能似乎也无法正常工作

function server {
    clear;

    if [ "$1" == "" ]
    then
        python -m SimpleHTTPServer $(portdiscovery)
    else
        python -m SimpleHTTPServer $1
    fi
}

2 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

server() {
    clear
    python -m SimpleHTTPServer "${1-$(portdiscovery)}"
}

在bash中,语法${var-default}表示如果取消设置$var,则会使用default。在这种情况下,默认值是函数portdiscovery的输出。

我使用了函数的标准语法而不是bash的function式方式。

测试出来:

$ portdiscovery() { echo "port discovery"; }
$ server() { echo "${1-$(portdiscovery)}"; }
$ server
port discovery
$ server 8802
8802

答案 1 :(得分:-1)

你可以设置别名然后检查$ 1并重置它是否已设置

server="clear && python -m SimpleHTTPServer ${1}"
[[ ! $1  ]] && server=$(portdiscovery)

编辑:

首先设置默认值。

server=$(portdiscovery)
[[ $1  ]] && server="clear && python -m SimpleHTTPServer ${1}"