如何在带有变量的for循环中引用命令替换?

How to quote the command substitution in a for loop with a variable inside of it?

现在,我的 bash 脚本没有按照我的要求执行。我 运行 “bash -x 脚本” 在我的 bash 脚本上调试它并测试我当前目录中的所有目录和文件,而不是用户指定的不同目录。只要告诉我我是如何引用命令替换错误的,这就是问题所在。当我 运行 它时,它没有查看 $dir 变量。

这是我的脚本:

  dir=
  
  for i in "$(ls $dir)"
  do
          if [ -d "$i" ]
          then
                     echo "$i"
          fi
  done

类似

dir=

for f in "$dir"/* ; do
    test -d "$f" || continue
    echo "$f"
done

这里重要的是不要循环 $(ls ...) 因为它在特殊字符上失败,而是使用 $dir"" 但不是通配符保护的模式*.