将主机名分配给 ksh 中的变量

将主机名分配给 ksh 中的变量

我正在尝试将 的输出分配hostname给变量并在我的脚本中使用它。虽然我能够将变量获取到另一个逻辑,但当我尝试打印变量时,它不会打印变量。

这是我想做的:

hostname服务器上的返回xy29abcd01

我想将其分配给一个变量,然后使用它删除主机名的第三个和第四个字符并将其分配给另一个变量。

这是我所拥有的

#!/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行。您正在使用$SERVER作为命令,并且找不到该命令。您想要做的是将字符串输入cut

    print $SERVER | cut -c1-2,5-10 | ...
    
  2. 这条线SERVER="echo `hostname`"写得更好

    SERVER=$(hostname)
    
  3. tr实用程序采用字符范围,因此无需将[:upper:]或括[:lower:]起来[ ... ]。但是,请将它们用引号引起来:

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

    当您想要使用tr诸如 shell 之类的东西时,这是一个好习惯*,否则 shell 将被视为通配符模式。

  4. 一般来说,请使用$( ... )反引号而不是反引号。它使代码更具可读性,更容易嵌套,并且在许多其他方面都更好

答案2

创建 bash 脚本。

OUTPUT="$(hostname)"
echo "${OUTPUT}"

使用以下命令运行 bash 脚本./scriptname.sh

相关内容