【问题标题】:howto concatenate two strings as a file name in bash?如何在bash中将两个字符串连接为文件名?
【发布时间】:2015-11-05 17:29:42
【问题描述】:

我在一个子目录中存储了三种类型(type1、type2 和 type3)的文本文件内容,并且每种类型的文件都有几个前缀,例如:prefix1、prefix2、...、prefixN。文件名由前缀+类型连接,例如:prefix1type1 表示存储在该子目录中的特定文件。

我想做的是获取用户输入并将用户输入与三种类型连接成一个完整的文件名,并对其进行测试,如果文件存在,则将其内容读取到数组中。

mapfile -t mytype1 < <( cat ./cpu/{$cpu}+type1 )
mapfile -t mytype2 < <( cat ./cpu/{$cpu}+type2 )
mapfile -t mytype3 < <( cat ./cpu/{$cpu}+type3 )

有效吗?这个我没试过,知道吗? 非常感谢!

【问题讨论】:

  • $cpu 是用户输入或选择的。
  • 这里到底有什么问题?
  • shell 没有任何特殊的字符串连接运算符,只需使用cat ./cpu/${cpu}type1 -- 注意$ 外面大括号
  • 非常感谢格伦杰克曼,我敢打赌它应该可以工作,我怎么能给你学分?我正在处理的项目部分是创建一个 shell 脚本来自动安装 Gentoo。我是shell脚本方面的新手,我敢肯定还有问题,再次感谢!

标签: linux bash shell


【解决方案1】:

看起来你想要这样的东西:

for type in CFLAGS CHOST CPU ; do
    mapfile -t "$type" < ./cpu/"$cpu$type"
done

【讨论】:

  • 这些类型没有for循环这样的特性,实际上它们是CFLAGS、CHOST、CPU。
猜你喜欢
  • 1970-01-01
  • 2018-09-13
  • 2011-08-29
  • 1970-01-01
  • 2011-11-04
  • 2022-11-16
相关资源
最近更新 更多