我的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
}
答案 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}"