我无法使用bash循环遍历目录中的文件。我对bash很陌生,似乎无法弄清楚我遇到的问题。
当我循环浏览我明确提到的目录中的文件时,似乎没有问题。但是,当使用变量来描述要循环的目录时,事情似乎无法解决。
工作循环,找到~/Desktop/
中的所有文件:
for file in ~/Desktop/*; do
echo "$file"
done
但是,以下似乎不起作用,只显示~/Desktop/*
,
DEST="~/Desktop/*"
for file in "$DEST"; do
echo "$file"
done
希望我在这里找不到一些小东西。我的主要目标是,我希望能够遍历可以保存在某些类型的配置文件中的任意位置。
提前致谢!
答案 0 :(得分:-2)
根据the reference manual,代字号扩展不适用于引号。 最简单的选择是改用$ HOME。
假设问题中的代码与代字号扩展分开(如果〜/ Desktop中的文件都有非常简单的名称,则可以这样做),那么你可以修改你的代码而不用代字号:
DEST="$HOME/Desktop/*"
for file in "$DEST"; do
echo "$file"
done
但是,如果这样做,很可能会遇到文件名扩展(globbing)问题。你最好随处丢弃报价,因为它们不需要。此外,延迟文件名扩展,直到实际需要:
DEST=~/Desktop
for file in $DEST/*; do
echo $file
done