我试图在bash中编写一个脚本,当网络网关发生更改时,脚本将自动添加一行/在/etc/rsyslog.conf中替换一行。这将启用rsyslog服务器的定向日志记录分发到特定的日志文件。从Bash脚本中获取网关IP失败,但在终端中工作
我还没有能够确定为什么这会失败,并希望有更好的理解能够解决的人。
以下是脚本。
#!/bin/bash
GETGATEWAY="route -n | grep 'UG[ \t]' | awk '{print \$2}'"
echo "This is a test"
echo $GETGATEWAY
shopt -s extglob
$GETGATEWAY
结果如下。
这是测试路径-n | grep'UG [\ t]'| awk'{print $ 2}'用法: route [-nNvee] [-FC] []列出内核路由表 route [-v] [-FC] {add | del | flush} ...修改AF的路由表。
route {-h|--help} [<AF>] Detailed usage syntax for specified AF. route {-V|--version} Display version/author and exit. -v, --verbose be verbose -n, --numeric don't resolve names -e, --extend display other/more information -F, --fib display Forwarding Information Base (default) -C, --cache display routing cache instead of FIB
=使用'-A'或' - ';默认:inet可能的 地址系列列表(支持路由): inet(DARPA Internet)inet6(IPv6)ax25(AMPR AX.25) netrom(AMPR NET/ROM)ipx(Novell IPX)ddp(Appletalk DDP) X25(CCITT X.25)
如果复制的回声线后,“这是一个测试”并粘贴在终端上执行,它将按预期工作。 route -n | grep'UG [\ t]'| awk'{print $ 2}'
我试过了多个shell选项,但没有使用shopt -s extglob。
不用使用额外的_pipe_和'grep'当'路线-n的| awk'/ UG [\ t]/{print $ 2}''产生与'route -n |相同的结果grep'UG [\ t]'| awk'{print $ 2}''确实! – user3439894