我有以下线在我的Mac OS .bash_profile
文件:什么是||的等价物shell脚本中的JavaScript运算符?
alias server="clear && python -m SimpleHTTPServer \$(portdiscovery)"
凡portdiscovery
是一个简单的程序,输出一个可用的端口。
我想有一个可选的端口参数设置将覆盖调用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
}
别名是简单的文本替换,所以'$ 1'的别名并不是指别名的第一个参数,但在从别名被称为背景下'$ 1'。 –
顺便提一句,'function'关键字是反模式的 - 它是与POSIX sh不必要的不兼容性。只需使用'server(){...'是定义函数的更好方法。 –
同样,出于兼容性原因,习惯于使用if [“$ 1”=“”]'或者如果[-z“$ 1”]'比'if'“$ 1”==“”]更加安全。] '; '=='在POSIX sh中不是有效的字符串比较运算符。 –