【问题标题】:BASH "for ... in ..." don't work with variables [duplicate]BASH“for ... in ...”不适用于变量[重复]
【发布时间】:2020-11-10 00:20:14
【问题描述】:

我想编写一个简单的脚本,对用户定义目录中的每个文件执行一些操作。这是一个适用于预定义目录的脚本:

for file in mydir/*; do

        printf "$file"

done

这是一个类似的脚本,打印由变量定义的目录中每个文件的名称:

for file in "$nicedir*"; do

        printf "$file"

done

第二个脚本不起作用。当然,我记得路径尽头的斜线。 (我将 ./ 作为参数传递,而不仅仅是 .)

【问题讨论】:

  • echo $nicedir 显示什么?

标签: linux bash shell


【解决方案1】:

路径名扩展不会发生在带引号的字符串中。将通配符放在引号之外:

for file in "$nicedir"* ; do
    printf '%s\n' "$file"
done

路径中通常不需要最后的斜杠,因此您会更经常看到

for file in "$nicedir/"*
# or equivalent
for file in "$nicedir"/*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2018-10-09
    • 2011-07-24
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多