有没有办法在 bash 命令中显示函数输出

Is there a way to display function output in bash command

有一个简单的 bash 脚本,我正在使用 Mac,但我有一个问题。

#!/bin/bash

# Pull users IP from getifaddr on specfic port
myip ( ) {
    #ipconfig getifaddr ppp0
    local _ip _myip _line _nl=$'\n'
    while IFS=$': \t' read -a _line ;do
        [ -z "${_line%inet}" ] &&
           _ip=${_line[${#_line[1]}>4?1:2]} &&
           [ "${_ip#127.0.0.1}" ] && _myip=$_ip
      done< <(LANG=C /sbin/ifconfig)
    printf ${1+-v}  "%s${_nl:0:$[${#1}>0?0:1]}" $_myip
}

printf "My ip: %" 
myip

# Static server IP stored
serverip ( ) {
    echo 192.168.12.110

}


serverip

## Command to add them together
sudo route add $myip $severip

到目前为止这些功能可以工作,但是 sudo route 命令没有,因为我猜没有 return 值。

我需要它做什么,它将 myip IP 地址和 serverip IP 地址输出到行中,这样命令就可以 运行 在一个命令中。

例如:sudo route add 192.168.0.1 192.168.0.2

现在,它告诉我 "myip is not a valid routing address" 因为我相信它使用的是文字 4 字符串 "myip" 而不是 IP 地址。

Bash 的命令替换可能有帮助:

sudo route add $(myip) $(serverip)