如何在带有变量的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
受 ""
但不是通配符保护的模式*
.
现在,我的 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
受 ""
但不是通配符保护的模式*
.