请告诉我为什么这个脚本不会在主目录中打印文件名。
#!/bin/bash
d="$HOME"
for f in $d
do
echo "$f"
done
答案 0 :(得分:1)
$HOME
扩展到调用用户的主目录,例如/home/foobar
,因此变量d
将只包含此字符串,而不是目录中的内容。
您可以利用数组:
#!/bin/bash
files=( "$HOME"/* )
for f in "${files[@]}"; do
echo "$f"
done
数组files
将包含$HOME
"${files[@]}"
扩展为数组files
的元素,引号对于防止分词和通过shell进行路径名扩展非常重要
我们使用for
循环迭代数组元素