从每个数组元素中提取最后一个字符串

问题描述 投票:0回答:1

我创建了一个数组,如下所示:

declare -p RePos=("$MntPnt"/Module-Basesystem\ sles-15-"$ServPck"-server-basesystem-x86_64
                  "$MntPnt"/Module-Server-Applications\ sles-15-"$ServPck"-server-application-x86_64
                  "$MntPnt"/Module-Development-Tools\ sles-15-"$ServPck"-server-development_tools-x86_64
                 )

然后我尝试(但未能)打印/回显每个数组元素的最后一个字符串,即

sles-15-sp3-server-basesystem-x86_64
sles-15-sp3-server-application-x86_64
sles-15-sp3-server-development_tools

使用以下内容:

for Add_RePos in "${!RePos[@]}"
do
  echo "
  $(tput setaf 2)--> Creating "${RePos[@]-1}" Repositories <--$(tput sgr0)
  "
done

但是,当我运行关联的脚本时,我没有得到所需的结果,只是得到了数组的所有元素。

# sh CreateReposWithISO.sh

declare -a RePos=([0]="/mnt/Module-Basesystem sles-15-sp3-server-basesystem-x86_64" [1]="/mnt/Module-Server-Applications sles-15-sp3-server-application-x86_64" [2]="/mnt/Module-Development-Tools sles-15-sp3-server-development_tools-x86_64")

  --> Creating /mnt/Module-Basesystem sles-15-sp3-server-basesystem-x86_64 /mnt/Module-Server-Applications sles-15-sp3-server-application-x86_64 /mnt/Module-Development-Tools sles-15-sp3-server-development_tools-x86_64 Repositories <--


  --> Creating /mnt/Module-Basesystem sles-15-sp3-server-basesystem-x86_64 /mnt/Module-Server-Applications sles-15-sp3-server-application-x86_64 /mnt/Module-Development-Tools sles-15-sp3-server-development_tools-x86_64 Repositories <--


  --> Creating /mnt/Module-Basesystem sles-15-sp3-server-basesystem-x86_64 /mnt/Module-Server-Applications sles-15-sp3-server-application-x86_64 /mnt/Module-Development-Tools sles-15-sp3-server-development_tools-x86_64 Repositories <--
# bash --version
GNU bash, version 4.4.23(1)-release (x86_64-suse-linux-gnu)

我尝试了几种不同的格式来产生我想要的结果,但没有成功,即

${RePos[${#RePos[@]} - 1]}
linux bash scripting
1个回答
0
投票

看起来您可能需要一个关联数组:

#!/bin/bash

MntPnt=/mnt/c
SerPck=sles-15-sp3
declare -A RePos=("$MntPnt"/Module-Basesystem\  sles-15-"$ServPck"-server-basesystem-x86_64
                  "$MntPnt"/Module-Server-Applications\  sles-15-"$ServPck"-server-application-x86_64
                  "$MntPnt"/Module-Development-Tools\  sles-15-"$ServPck"-server-development_tools-x86_64
                 )
for Add_RePos in "${!RePos[@]}"
do
  echo "\"$Add_RePos\" Creating \"${RePos[$Add_RePos]}\" Repositories"
done

输出:

"/mnt/c/Module-Development-Tools " Creating "sles-15--server-development_tools-x86_64" Repositories
"/mnt/c/Module-Basesystem " Creating "sles-15--server-basesystem-x86_64" Repositories
"/mnt/c/Module-Server-Applications " Creating "sles-15--server-application-x86_64" Repositories
© www.soinside.com 2019 - 2024. All rights reserved.