【发布时间】:2018-03-29 09:20:38
【问题描述】:
我的教授希望我们编写一个脚本来执行ls -l,将文件移动到另一个目录,如果有目录,它将进入该目录并再次调用自己。
#!/bin/bash
teste=/home/cunha/sistemas_operativos/versao3.sh
for i in ls -l "$1"; do
echo "$i"
if [[ -d "$i" ]]; then #|!!!its making an infinite loop!!!|#
bash "$teste" "$i"
fi
done
我正在尝试做的事情:Ls -l 在输入目录上,显示每个文件,mv file dir,如果里面有另一个目录进入并调用自己做另一个ls -l。
我现在的问题是它正在创建一个无限循环。
【问题讨论】:
-
您的代码中有很多错误,请使用 shellcheck.net。 2 分:1. 使用 $(ls...) 来包装你的命令 2. 使用 ls 而不是 ls -l,bcoz ls -l 引入了额外的信息,而不仅仅是文件/目录名
-
你的教授应该先学习更多关于 shell 编程的知识。
-
@chepner,我认为这个脚本不是教授写的,所以你怎么推断他的教授必须学习shell编程?脚本被清楚地复制了,因为它不能像它所写的那样工作(主要是通过
ls -l命令),但练习的答案很清楚......一切都在同一个目录中完成,所以调用递归永远. -
也许我草率地假设使用
ls -l是文字说明的一部分,但遗憾的是,在太多的情况下,这种假设是成立的。
标签: linux bash shell loops for-loop