我試圖在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