用单引号替换双

时间:2015-07-22 11:49:03

标签: string bash quotes

我需要评估目录中每个文件名的长度。这是我的所作所为:

files=$(ls -Q)
for file in $files;
do
    echo lenght: ${#file}
done

但长度是用双引号(+2)计算的。我怎么能逃脱呢?

3 个答案:

答案 0 :(得分:1)

不解析ls的输出,使用通配符和for

for file in * ; do
    echo "$file: ${#file}"
done

答案 1 :(得分:0)

你不需要ls,而你正在经历一些为什么dangerous/tricky解析ls的输出

你可以做到

for file in *; do
    echo "length: ${#file}"
done

答案 2 :(得分:0)

为什么要使用'-Q'标志呢? 如果你遗漏它,你会得到文件名的实际长度。

相关问题