kshの変数にホスト名を割り当てる

kshの変数にホスト名を割り当てる

hostname変数の出力を変数に割り当て、スクリプトで使用しようとしています。変数を別のロジックにインポートできますが、変数を印刷しようとすると変数は印刷されません。

これが私がしたいことです:

hostnameサーバーに戻りますxy29abcd01

これを変数に割り当て、それを使用してホスト名の3番目と4番目の文字を削除し、別の変数に割り当てたいと思います。

これは私が持っているものです。

#!/bin/ksh

print " Get queue manager name"
SERVER="echo `hostname`"
print"$SERVER"
export QMGR=`$SERVER |cut -c1-2,5-10| tr [[:lower:]] [[:upper:]`

print "Queue manager name $QMGR"

このコマンドを実行したときの出力は次のとおりです。

Get queue manager name
./test.sh[13]: printecho xy29abcd01: not found [No such file or directory]
Queue manager name XYABCD01

SERVER変数を割り当てるとき、ここで何か間違ったことをしています。希望の出力

xy29abcd01
Queue manager name XYABCD01

ベストアンサー1

スクリプトにはいくつかの問題があります。

  1. エラーはこのexport行で発生します。 as コマンドを使用しており、$SERVERコマンドが見つかりません。あなたがしたいのは、次の文字列を置くことですcut

    print $SERVER | cut -c1-2,5-10 | ...
    
  2. この行はSERVER="echo `hostname`"もっとよく書かれています。

    SERVER=$(hostname)
    
  3. このユーティリティは文字範囲を使用するため、またはを囲むtr必要はありません。ただし、引用符で囲んでください。[:upper:][:lower:][ ... ]

    tr '[:lower:]' '[:upper:]'
    

    trこれは、シェルのようなものを使用したい場合には良い習慣です*。それ以外の場合、シェルはそれをワイルドカードパターンとして扱います。

  4. 通常、$( ... )バックティックの代わりにバックティックを使用します。コードを読みやすく、ネストしやすく、他の多くの点でより良い

おすすめ記事