变量中带有通配符的文件名

马修·伯丁(Matthew Burdine)
#!/bin/bash
outbound=/home/user/outbound/
putfile=DATA_FILE_PUT_*.CSV
cd $outbound
filecnt=0
for file in $putfile; do let filecnt=filecnt+1; done
echo "Filecount: " $filecnt

因此,当出站目录中有文件时,此代码很好用。我可以将文件放入出站路径,只要它们与putfile掩码匹配,则文件将按预期增加。

问题出在哪里进来的,如果我跑这虽然没有位于文件$outbound如果文件数为零,则$filecnt仍然返回a,10如果文件中没有文件,我希望它返回a

我是否缺少简单的东西?

吉勒斯“别再邪恶了”

将其放在set -x#!行的下方,以查看您的脚本在做什么。

如果没有匹配的文件,则通配符将不展开,并且循环将运行一次,file其值为DATA_FILE_PUT_*.CSV

要更改此设置,请设置nullglob选项。请注意,这仅适用于bash,不适用于sh。

shopt -s nullglob
putfile=DATA_FILE_PUT_*.CSV
for file in $putfile; do let filecnt=filecnt+1; done

请注意,该putfile变量包含通配符模式,而不是文件名列表。将匹配列表放在变量中可能更有意义。这需要是一个数组变量,并且您需要首先更改当前目录。匹配文件的数量就是数组的长度。

#!/bin/bash
shopt -s nullglob
outbound=/home/user/outbound/
cd "$outbound"
putfiles=(DATA_FILE_PUT_*.CSV)
echo "Filecount: " ${#putfiles}

如果需要遍历文件,请注意用双引号保护数组的扩展,否则,如果文件名包含空格,则将其拆分为多个单词(如果文件名包含通配符,则将扩展它们) )。

#!/bin/bash
shopt -s nullglob
outbound=/home/user/outbound/
cd "$outbound"
putfiles=(DATA_FILE_PUT_*.CSV)
for file in "${putfiles[@]}"; do
  echo "Processing $file"
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理文件名中带有通配符的文件

来自分类Dev

处理文件名中带有通配符的文件

来自分类Dev

Powershell gci 在一个函数中。将带有通配符的文件名变量传递到函数中

来自分类Dev

复制文件名中带有方括号[]的文件,并使用*通配符

来自分类Dev

如何使用带有“长文件名”的通配符*?

来自分类Dev

输出带有存储在变量中的文件名的文件内容

来自分类Dev

转义文件名带有空格的转义变量

来自分类Dev

Expect脚本-发送带有变量的文件名

来自分类Dev

如何使用 forfiles 和 xocpy 排除带有文件名通配符的文件

来自分类Dev

如何在文件名中同时扩展变量名和通配符?

来自分类Dev

是否可以使用带有通配符的重命名命令来更改文件名前缀?

来自分类Dev

对带有空格的文件名使用makefile通配符命令

来自分类Dev

批处理文件,文本文件中的变量/文件名中带有空格

来自分类Dev

文件名中带有空格的grep文件

来自分类Dev

bash,删除文件名中带有字母的文件

来自分类Dev

无法删除带有“?”的文件 在文件名中

来自分类Dev

文件名中带有多个`.`的mv文件

来自分类Dev

文件名中带有'(撇号)的文件名

来自分类Dev

文件名中带有#的超链接字段

来自分类Dev

删除文件名中带有特殊字符的目录

来自分类Dev

在文件名中带有空格的GetFiles

来自分类Dev

在shell中处理带有空格的文件名

来自分类Dev

名称中带有 # 的文件名无法下载

来自分类Dev

在所有服务器共享中搜索通配符文件名

来自分类Dev

与通配符的文件名比较

来自分类Dev

带有特殊字符的文件名

来自分类Dev

使用通配符检查文件名搜索模式中的冲突

来自分类Dev

如何在Bash中获取文件名的通配符部分

来自分类Dev

使用零填充文件名中的索引并接受通配符

Related 相关文章

  1. 1

    处理文件名中带有通配符的文件

  2. 2

    处理文件名中带有通配符的文件

  3. 3

    Powershell gci 在一个函数中。将带有通配符的文件名变量传递到函数中

  4. 4

    复制文件名中带有方括号[]的文件,并使用*通配符

  5. 5

    如何使用带有“长文件名”的通配符*?

  6. 6

    输出带有存储在变量中的文件名的文件内容

  7. 7

    转义文件名带有空格的转义变量

  8. 8

    Expect脚本-发送带有变量的文件名

  9. 9

    如何使用 forfiles 和 xocpy 排除带有文件名通配符的文件

  10. 10

    如何在文件名中同时扩展变量名和通配符?

  11. 11

    是否可以使用带有通配符的重命名命令来更改文件名前缀?

  12. 12

    对带有空格的文件名使用makefile通配符命令

  13. 13

    批处理文件,文本文件中的变量/文件名中带有空格

  14. 14

    文件名中带有空格的grep文件

  15. 15

    bash,删除文件名中带有字母的文件

  16. 16

    无法删除带有“?”的文件 在文件名中

  17. 17

    文件名中带有多个`.`的mv文件

  18. 18

    文件名中带有'(撇号)的文件名

  19. 19

    文件名中带有#的超链接字段

  20. 20

    删除文件名中带有特殊字符的目录

  21. 21

    在文件名中带有空格的GetFiles

  22. 22

    在shell中处理带有空格的文件名

  23. 23

    名称中带有 # 的文件名无法下载

  24. 24

    在所有服务器共享中搜索通配符文件名

  25. 25

    与通配符的文件名比较

  26. 26

    带有特殊字符的文件名

  27. 27

    使用通配符检查文件名搜索模式中的冲突

  28. 28

    如何在Bash中获取文件名的通配符部分

  29. 29

    使用零填充文件名中的索引并接受通配符

热门标签

归档