循环遍历bash中的一系列文件名

时间:2017-10-31 10:18:48

标签: bash

我正在尝试在循环中处理一些文件。这个版本有一些硬编码用于测试,但我的问题是获取带变量的完整文件名,它看起来不错,但脚本挂起,所以显然我做了一些愚蠢的事情。有人可以帮忙吗?这是我的剧本

File_numbers={1003,1004}
File_name=$Domain + "__" + $Domain + "_" + $i "__" + * +  ".ext"
Full_path=$Path + "/" + $Domain + "/" + $File_name

for i in $File_numbers; 
do echo $i; cat $Full_path; 
done

如果某人有一个更优雅的解决方案,也可以。

更新: 我已经改变了我的脚本(基于用户指出的问题)

#!/bin/bash

Path="aPath";
Domain="aDomain";
File_numbers="{1003,1004}"
Full_path=$Path"/"$Domain"/"

for i in $File_numbers; do find $Full_path -name "*"$i"*" | xargs cat; done

似乎在这种情况下无法识别变量

1 个答案:

答案 0 :(得分:0)

我愿意(解决一系列小问题):

#!/bin/bash
Path="aPath"
Domain="aDomain"
File_numbers="[1003|1004]"
Full_path="$Path/$Domain/"

find $Full_path -name "*$File_numbers*" | xargs cat

所以我改变了:

  • 不;在bash!
  • 无需在File_numbers上循环。 [1003 | 1004] 表示包括1003或1004在内的任何内容。
  • 注意-name" $ File_numbers "包含""
  • 中的所有内容
  • Full_path:变量可在双引号内使用(")。

最后,我强烈建议您进行快速谷歌搜索并找到bash的初学者指南,这将为您节省大量时间!现在投资或腰部时间以后!