我正在尝试将 的输出分配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
您的脚本有几个问题:
错误源于该
export
行。您正在使用$SERVER
作为命令,并且找不到该命令。您想要做的是将字符串输入cut
:print $SERVER | cut -c1-2,5-10 | ...
这条线
SERVER="echo `hostname`"
写得更好SERVER=$(hostname)
该
tr
实用程序采用字符范围,因此无需将[:upper:]
或括[:lower:]
起来[ ... ]
。但是,请将它们用引号引起来:tr '[:lower:]' '[:upper:]'
当您想要使用
tr
诸如 shell 之类的东西时,这是一个好习惯*
,否则 shell 将被视为通配符模式。一般来说,请使用
$( ... )
反引号而不是反引号。它使代码更具可读性,更容易嵌套,并且在许多其他方面都更好。
答案2
创建 bash 脚本。
OUTPUT="$(hostname)"
echo "${OUTPUT}"
使用以下命令运行 bash 脚本./scriptname.sh