Bash

同一行上的下一個命令輸出?bash 腳本

  • July 31, 2019

我有以下簡單的腳本:

echo "-------------------------- SOA --------------------------------"
echo " "
echo -n "  ---------> "; dig soa "$1" +short | awk '{print $3}'

輸出是這樣的:

-------------------------- SOA --------------------------------

---------> 2019072905

現在我的問題是我可以在 dig 之後發出一個“echo”命令,並且輸出是這樣的:

-------------------------- SOA -----------------------------

           ---------> 2019072905 <-------------

我試圖搜尋類似的案例,但找不到任何相關的。

這可能嗎?

提前致謝。

我會做整個事情printf

#!/bin/sh

header='-------------------------- SOA --------------------------'

headerLength=$(awk '{print length()}' <<<"$header")

value=$(dig soa "$1" +short | awk '{print $3}')

valueString="-----------> $value <-------------"

valueLength=$(awk '{print length()}' <<<"$valueString")

offset=$(((headerLength + valueLength)/2+1))

printf "%s\n\n%${offset}s\n" "$header" "$valueString"

這具有始終居中顯示的優點,無論您的值的長度是多少(使用稍作修改的版本,只是value=$1為了說明):

$ foo.sh 2019072905
-------------------------- SOA --------------------------------

           -----------> 2019072905 <-------------
$ foo.sh "some random long string"
-------------------------- SOA --------------------------------

     -----------> some random long string <-------------
$ foo.sh "foo"
-------------------------- SOA --------------------------

             -----------> foo <-------------
cmd=$(dig soa "$1" +short | awk '{print $3}'; echo -n \<----------;)

echo "-------------------------- SOA --------------------------------"
echo " "
echo -n "      ---------> ";echo $cmd

引用自:https://unix.stackexchange.com/questions/532938