web-dev-qa-db-ja.com

同じ行の次のコマンド出力? Bashスクリプト

次の簡単なスクリプトがあります。

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

出力は次のようになります。

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

---------> 2019072905

私の質問は、Digの後に「echo」コマンドを作成して、出力を次のようにすることです。

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

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

同様のケースを検索しようとしましたが、関連するケースは見つかりませんでした。

これは可能でしょうか?

前もって感謝します。

2
Miro

代わりに、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 <-------------
2
terdon
cmd=$(Dig soa "$1" +short | awk '{print $3}'; echo -n \<----------;)

echo "-------------------------- SOA --------------------------------"
echo " "
echo -n "      ---------> ";echo $cmd
4
Rasool Ziafaty
#!/bin/sh

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

cat <<__EOF__
-------------------------- SOA -----------------------------

            ---------> $soa <-------------
__EOF__

ところで、SOAの周りにあるすべてのヘッダーガベージを印刷すると、このスクリプトの出力を別のスクリプトへの入力として使用することが無意味に難しくなるため、問題は間違っていると思います...現在、そうする必要があると現在考えていない場合は、将来的にはそうなるかもしれません。出力の冗長性は、UNIXでは「罪」です:)-スクリプトを書くとき、出力は最終的には他人の(自分自身を含む)インプットである。

私はその質問を無視したでしょうが、私は他の答えをさらに嫌いでした。あなたが何か間違ったことをするつもりなら、あなたはそれをきちんとやるべきかもしれません。

2
cas