我正在尝试阅读此文件(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 感谢
答案 0 :(得分:1)
我复制了您的输入文件和脚本,但没有收到该错误。
如果您信任输入,则可以source $FILE
。
否则,这似乎比杂耍文件描述符简单:
cat $FILE | while read line; do echo "$line"; done
答案 1 :(得分:0)
使用引号显示它:
echo "$line"
另外,为什么要让文件阅读变得复杂。像这样使用简单的while循环来逐行读取:
while read -r line
do
echo "$line"
done < "$1"
更新:可能是由于您的文件中存在\r
字符。您能否显示cat -vte file
的输出并查看输出。