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
スクリプトにはいくつかの問題があります。
エラーはこの
export
行で発生します。 as コマンドを使用しており、$SERVER
コマンドが見つかりません。あなたがしたいのは、次の文字列を置くことですcut
:print $SERVER | cut -c1-2,5-10 | ...
この行は
SERVER="echo `hostname`"
もっとよく書かれています。SERVER=$(hostname)
このユーティリティは文字範囲を使用するため、またはを囲む
tr
必要はありません。ただし、引用符で囲んでください。[:upper:]
[:lower:]
[ ... ]
tr '[:lower:]' '[:upper:]'
tr
これは、シェルのようなものを使用したい場合には良い習慣です*
。それ以外の場合、シェルはそれをワイルドカードパターンとして扱います。通常、
$( ... )
バックティックの代わりにバックティックを使用します。コードを読みやすく、ネストしやすく、他の多くの点でより良い。
答え2
Bashスクリプトを作成します。
OUTPUT="$(hostname)"
echo "${OUTPUT}"
次のコマンドを使用して bash スクリプトを実行します。./scriptname.sh