我正在尝试编写一个脚本,它的功能比我要向您展示的功能更复杂一些,但我知道问题出在这部分。
我希望通过以下方式将目录中文件列表的每个名称分配给一个变量(同一变量,一次一个)for
循环,然后用这个在循环内部做一些事情,看看是什么意思:
for thing in $(ls $1);
do
file $thing;
done
编辑:假设这个 scrypt 名为 Scrypt,我有一个名为 Folder 的文件夹,里面有 3 个文件,名为 A、B、C。当我写下以下内容时,我希望它在终端上显示:
./scrypt Folder
下列:
A: file
B: file
C: file
通过上面显示的代码,我得到了:
A: ERROR: cannot open `A' (No such file or directory)
B: ERROR: cannot open `B' (No such file or directory)
C: ERROR: cannot open `C' (No such file or directory)
那就是问题所在
一种方法是使用通配符扩展而不是ls
, e.g.,
for filename in "$1"/*; do
command "$filename"
done
这假设$1
是其中包含文件的目录的路径。
如果您只想对纯文件进行操作,请在后面添加一个检查do
沿着以下思路:
[ ! -f "$filename" ] && continue
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)