0

我有一个简单的 Linux shell 脚本,它解析在 Windows 中生成的与 Linux VM 共享的文件。我想从这个文件中获取一个IP地址,并在末尾附加一个冒号0(:0),以设置DISPLAY环境变量。当我尝试这样做时,我得到了奇怪的结果。

这是脚本:

#!/bin/bash
LOCAL_HOST=`grep IPv4 /mnt/hgfs/share/localip | awk 'NR ==1 {printf "%s\n", $14 }'`

# for some reason, it overwrites the string from the beginning
COLON_ZERO=':0'
export DISPLAY=${LOCAL_HOST}${COLON_ZERO}
echo $DISPLAY

# This obviously works, but doesnt have the COLON_ZERO on the end
echo "export DISPLAY="$LOCAL_HOST

这是运行此脚本的输出:

# ./display.sh
:09.107.26.25
export DISPLAY=159.107.26.25

# bash --version
GNU bash, version 3.2.48(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.

以防万一,这里是脚本中使用的文件的 grep 结果:

# grep IPv4 /mnt/hgfs/share/localip
   IPv4 Address. . . . . . . . . . . : 159.107.26.25
   IPv4 Address. . . . . . . . . . . : 192.168.223.1
   IPv4 Address. . . . . . . . . . . : 192.168.132.1

为什么当我将冒号零附加到 IP 地址字符串的末尾时会得到这个奇怪的结果?如何更改脚本以获得正确的结果?

4

1 回答 1

2

您的输入文件包含 Windows 行尾 (\r\n)。从 IP 地址中删除 \r 字符。

于 2012-07-23T09:47:20.660 回答