获取文件夹名称的一部分作为变量

获取文件夹名称的一部分作为变量

我有 2 个文件夹名称,它们有 2 个 ID,例如“ABFD00”和“KASD02”。

现在我需要文件夹的一小部分作为变量(00 和 02)以在命令中使用它。喜欢:

sapcontrol -nr $sid -function GetSystemInstanceList

答案1

您可以将输出分配给变量,然后可以使用模式匹配,例如:

VAR1=ABCD01
echo ${VAR1##*[[:alpha:]]}

这将从变量中删除所有字母字符并打印“01”。

答案2

尝试

$ find . -name "[A-Z]*" -type d | 
while read FN
  do    echo  sapcontrol -nr ${FN##*[A-Z]} -function GetSystemInstanceList 
  done
sapcontrol -nr 00 -function GetSystemInstanceList
sapcontrol -nr 02 -function GetSystemInstanceList

答案3

如果您只需要几个特定文件夹中的最后两个字符,那么还有:

echo ${VAR1:(-2)}

甚至(扩展@RudiC)并选择不带任何数字的目录,除了带有GNU扩展的最后两位数字find

find . -type d -regex "[^0-9]*[0-9][0-9]" -exec sh -c 'echo sapcontrol -nr ${1:(-2)} -function GetSystemInstanceList' sh {} \;

相关内容