从文件名中提取变量名

Extracting variable name from filename

我有一个 bash 文件:

agro_233_720

在这个 bash 脚本中,我想将其名称中下划线分隔的部分用作变量:

name= agro
ip= 233
resolution= 720

我怎样才能得到它们?

我试着写:

name=`basename "[=12=]"`

但它输出孔名 (agro_233_720)

谢谢!

name=$(basename [=10=] | cut -d_ -f1)
ip=$(basename [=10=] | cut -d_ -f2)
resolution=$(basename [=10=] | cut -d_ -f3)

cut 围绕 -d 和 returns 提供的分隔符拆分其输入 -f.

指定的索引处的字段

请参阅 ,了解无需使用外部程序即可一次提取 3 个变量的更高效解决方案。

read :

$ 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 

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

Tcl可以这样写,

lassign [ split $argv0 _] name ip resolution

如果您的 Tcl 版本低于 8.5,则使用 lindex 提取信息。

set input [split $argv0 _]
set name [lindex $input 0]
set ip [lindex $input 1]
set resolution [lindex $input 2]

变量 argv0 将包含脚本名称。