我有一个简单的Linux shell脚本,用于解析在与Linux VM共享的Windows中生成的文件。我想从这个文件中获取一个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地址字符串的末尾时,为什么会得到这个奇怪的结果?如何更改脚本以获得正确的结果?
答案 0 :(得分:2)
您的输入文件包含Windows行结尾(\ r \ n)。从IP地址中删除\ r \ n字符。