发布网友 发布时间:2022-04-24 10:01
共1个回答
热心网友 时间:2023-10-09 16:19
for name [ in word ] ; do list ; done
如果省略in word,for命令会遍历参数"$@", 也就是 $1, $2, ... $n
set命令的参数都被作为位置参数的值赋值,分别赋予$1, $2, ... $n, 也就是"$@"
for file 一行遍历的脚本的参数"$@"
然后set fnord `command`一行修改了"$@"的内容, sed命令执行了四次字符串替换然后打印,将开头的':/'替换为'#',将开头的:删除,将所有的'/'替换为空格,将开头的'#'替换为'/'。
下一行的shift把字符串fnord从"$@"里移除
然后在for d一行遍历新的"$@"。
for file
相当于
for file in "$@"
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
for d
相当于
pathcomp=
for d in `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`