请问一下关于shell脚本 cat EOF while case的问题?麻烦大佬帮忙看看!

#######################
list_files() {
cat <<EOF
etc/hosts
EOF
}

case "$1" in
cp1)
list_files | while read FILE DUMMY; do
cp1_file $S/"$FILE"
done
;;
cp2)
list_files | while read FILE REPLACEMENT; do
R=""
[ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
[ -f "$C/$S/$FILE" ] && cp2_file $S/"$FILE" "$R"
done
;;
esac
#######################
这段脚本什么意思?

慕勒3428872
浏览 306回答 2
2回答

牧羊人nacy

list_files 函数,读取 /etc/hosts 文件内容。case语句根据脚本的第一个参数($1)来判断走下面的cp1分支还是cp2分支。cp1分支:读取/etc/hosts 文件中每行前两个字段分别赋值给FILE和DUMMY,然后调用cp1_file(可能是函数也可能是另一个脚本,这段代码中没出现,看不出来;同样$S是什么也看不出)。cp2分支:cp2_file和$S 是什么,同样也不知道。你给的代码不完整。

杨__羊羊

就是执行脚本时带参数cp1或cp2就执行case中对应的程序段呗,你看看cp1_file和cp2_file分别是干嘛的大概就清楚了
打开App,查看更多内容
随时随地看视频慕课网APP