4

我正在尝试读取此文件 (env.cfg)

AXXL_EXCHANGE="/home/company/RECETTE/data"
HOME_LOG="/home/company/RECETTE/logs"
PXXWS_ALERT=user@company.com
PXXWS_DAV=https://URL/ascl/webdav
PXXWS_URL=https://URL/ascl/services
PXXWS_PEM=/home/folder/RECETTE/conf
PXXWS_XSLT=/home/folder/RECETTE/conf
PXXWS_PWD=
PXXWS_CURL="-m 3600 -k" # max-time 3600 (tests)
TMP_DIR=/tmp

使用以下 bash 脚本 (RES.sh)

#!/bin/bash
FILE=$1
# read $FILE using the file descriptors
exec 3<&0
exec 0<$FILE
while read line
do
# use $line variable to process line
echo $line
done
exec 0<&3

这是脚本回显的内容(在控制台上)

AXXL_EXCHANGE="/home/company/RECETTE/data"
HOME_LOG="/home/company/RECETTE/logs"
PXXWS_ALERT=user@company.com
PXXWS_DAV=https://URL/ascl/webdav
PXXWS_URL=https://URL/ascl/services
PXXWS_PEM=/home/folder/RECETTE/conf
PXXWS_XSLT=/home/folder/RECETTE/conf
PXXWS_PWD=
PXXWS_CURL=
TMP_DIR=/tmp

最后一行 (PASWS_CURL) 右侧缺失

环境:debian wheezy 谢谢

4

2 回答 2

1

我复制了您的输入文件和脚本,但没有收到该错误。

如果你相信输入,你可以source $FILE.

否则,这似乎比杂耍文件描述符更简单:

cat $FILE | while read line; do echo "$line"; done
于 2013-11-08T10:29:17.367 回答
0

使用引号来显示它:

echo "$line"

还有为什么要让读取文件变得复杂。使用像这样的简单 while 循环逐行读取:

while read -r line
do
    echo "$line"
done < "$1"

更新:这可能是由于\r您的文件中存在字符。你能显示输出cat -vte file并查看输出吗?

于 2013-11-08T10:29:31.503 回答