【发布时间】:2018-02-14 01:51:10
【问题描述】:
我实际上在使用一个小脚本,这个脚本使用来自 NAS EMC Storage 的命令,主要思想是存储和输出变量并将其用于其他命令。
nameserver="$(nas_server -list -all | awk 'NR == 3 {print $6}')"
serverparam1="$(server_param "$nameserver" -facility NDMP -list)"
echo "$serverparam1"
所以.. 这个命令nas_server -list -all | awk 'NR == 3 {print $6} 返回“server_3”
这个想法是存储名称“server_3”并在其他命令中使用它:
server_param server_3 -facility NDMP -list
所有这些东西的问题在于,输出打印不是“server_3”,只有“ver_3”,我不知道为什么会这样。
这是终端的输出:
[nasadmin@xxxx ~]$ ./test.sh
: ver_3
: unknown hostver_3
这是 server_param 的输出
[nasadmin@xxxx ~]$ server_param server_3 -facility NDMP -list
server_3 :
param_name facility default current configured
maxProtocolVersion NDMP 4 4
scsiReserve NDMP 0 0
DHSMPassthrough NDMP 0 0
CDBFsinfoBufSizeInKB NDMP 1024 1024
noxlt NDMP 0 0
bufsz NDMP 128 128
convDialect NDMP 8859-1 8859-1
concurrentDataStreams NDMP 4 4
includeCkptFs NDMP 1 1
md5 NDMP 1 1
snapTimeout NDMP 5 5
dialect NDMP
forceRecursiveForNonDAR NDMP 0 0
excludeSvtlFs NDMP 1 1
tapeSilveringStr NDMP ts ts
portRange NDMP 1024-65535 1024-65535
snapsure NDMP 0 0
v4OldTapeCompatible NDMP 1 1
[nasadmin@xxxx ~]$ nas_server -list -all
id type acl slot groupID state name
1 1 0 2 0 server_2
2 4 0 3 0 server_3
id acl server mountedfs rootfs name
1 0 1 17 13 TEST_VDM-1
2 0 1 16 14 TEST_VDM-2
谢谢
【问题讨论】:
-
如果你对它进行十六进制转储,你会得到什么?
./test.sh | xxd -
在输出中的某处听起来像
\r -
实际上,那就是
./test.sh 2>&1 | xxd。我们也想获得标准错误。 -
你能告诉我们
nas_server -list -all的输出吗? -
只需在本网站的档案中搜索
dos2unix或谷歌即可。你会发现成千上万的点击,选择任何一个。问题是您的输入行以string\r\n结尾,而不仅仅是string\n和\r导致光标在打印时跳回行首,因此您得到一些输出,然后光标跳回感谢\r然后你得到剩下的,覆盖已经打印的内容。将命令的输出通过管道传送到| cat -v,以将\rs 视为^Ms。