为什么bash无法正确读取我的文件

问题描述 投票:-1回答:3

我正在尝试让我的脚本读取其中只有IP地址的文件。

我能够整理文件并获取IP,但是当我运行下面的脚本时,它又变空了。权限不是问题,我以root用户身份运行脚本(我知道我不应该以root用户身份运行东西,但我想消除权限问题。)

我在做什么错?


filename="/tmp/newhost.txt"


while IFS= read -r line; do
    echo $line
done < "$filename"

#if test -f "$filename"; then
 #   echo "got here"
#fi
linux bash centos6
3个回答
1
投票

如果您的文件仅包含一个IP,我建议使用:

#! /bin/bash
filename="/tmp/newhost.txt"
IFS= read -r line < "$filename"
echo "$line"

在这种情况下,文件是否包含尾随换行都没关系。


0
投票

我尝试使用包含两个IP地址的文件(分别在两行中,并且文件正常运行。),您的示例正常工作。

然后我发出:

echo -n "12.1.1.1" > myfile
while IFS= read -r line; do
  echo $line
done < myfile

...并且无法读取所存储的单个IP。

正如“那个家伙”在切肉刀评论中指出的那样,我也猜想那是你的问题!


0
投票

似乎文件没有上述的尾随换行。提供的代码也有效。我没想到,我以为我快疯了。我使用了以前在其他文件上发布的原始代码,并且可以正常工作,但随后它们又都包含了其他内容。

谢谢,

filename="/tmp/newhost.txt"
IFS= read -r line < "$filename"
echo "$line"```
© www.soinside.com 2019 - 2024. All rights reserved.