给定一个包含一行命令行参数的纯文本文件args.in
,将它们读入数组。
我们有4个文件:
args.in :
"ab" c
refimpl.sh :
read -r line
bash -c "bash showargs.sh $line"
arrayimpl.sh :
arr=()
# BEGIN-------------------------
# Input comes from stdin.
# You need to set arr here.
# END---------------------------
echo "${#arr[@]}"
for i in "${arr[@]}"; do
echo "$i"
done
showargs.sh :
echo "$#"
for i in "$@"; do
echo "$i"
done
将它们放入同一文件夹中。我们希望您实施arrayimpl.sh
以便
bash refimpl.sh < args.in
和
bash arrayimpl.sh < args.in
给出相同的输出。
您的解决方案应该只包含一个文件arrayimpl.sh
。
2
ab
c
此问题是this的更好表述,但不是this的重复。有些解决方案在那里工作但不在这里例如,当我们有以下输入时:
args.in
:
"a\"b" c
目前还没有已知的解决方案。
答案 0 :(得分:2)
此分配的预期解决方案等同于:
eval "arr=( $(cat) )"
这会将输入评估为shell单词,这也是refimpl.sh
的作用。
这仅适用于玩具问题和家庭作业。真实软件不应使用可执行代码作为数据格式。