从文件名中提取变量名

10 浏览
0 Comments

从文件名中提取变量名

这个问题已经有了答案

如何在Bash中使用定界符分割字符串?

我有一个bash文件:

agro_233_720

在这个bash脚本中,我想使用下划线分割的名称的部分作为变量:

name= agro
ip= 233
resolution= 720

我怎么能获取它们?

我尝试编写:

name=`basename "$0"`

但它输出了整个名称(agro_233_720)

谢谢!

admin 更改状态以发布 2023年5月23日
0
0 Comments

name=$(basename $0 | cut -d_ -f1)
ip=$(basename $0 | cut -d_ -f2)
resolution=$(basename $0 | cut -d_ -f3)

cut 根据提供的分隔符使用 -d 来分割其输入,并返回由 -f 指定索引的字段。

参见 SLePort's 的答案,提供了一种更有效的解决方案来提取 3 个变量,无需使用外部程序。

0
0 Comments

\n\n使用read:\n

$ IFS='_' read name ip resolution <<< "agro_233_720"
$ printf 'name: %s\nip: %s\nresolution: %s\n' "$name" "$ip" "$resolution"
name: agro                                                                                                                                                                                                                                   
ip: 233                                                                                                                                                                                                                                      
resolution: 720 

\n它会在IFS分隔符上拆分字符串并将值分配给变量。

0