【发布时间】:2014-04-24 21:46:05
【问题描述】:
为什么不读取文本文件。这里更好的方法是我的代码。 我正在尝试使用 for 读取一行,但它似乎不起作用
if [[ "$#" -ne 1 ]]
then
writeusage
exit
fi
your_path=../file/test1
test_path=../../public/test1
file_input="$1"
while read -r line
do
args+="$line"
done < "$file_input"
# Redirect the output to a file named text
$test_path > correctanswer 2>&1
# Redirect your output to a file named text2
$your_path > youranswer 2>&1
# diff the solutions
diff correctanswer youranswer
【问题讨论】:
-
仅供参考,全大写的变量名仅适用于环境变量和内置函数;对于进程局部变量,请考虑使用全小写名称以避免潜在的命名空间冲突。
-
另外,请参阅mywiki.wooledge.org/BashFAQ/050 --
$YOUR_PATH$args几乎是不符合定义的。 -
嗯,我明白了,谢谢你的提示你知道我为什么遇到新问题吗?
-
如果你想要每个参数一行,用
args=()初始化,用args+=( "$line" )追加,用"$your_path" "${args[@]}"调用。请注意,这不允许您使用包含文字换行符的参数——如果您想要一种允许表示任何和所有可能参数的文件格式,您需要使用 NUL 分隔符来分隔您的参数,而不是换行符分隔符。 -
这个问题是一系列密切相关但不重复的问题之一:SO 23282867、SO 23281913、SO 23280857、SO 23280484。