有没有办法在 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)
有一个简单的 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)