需要有关使用Case的AWS配置文件切换器的此shell脚本的帮助

nkcskrwz  于 2023-11-21  发布在  Shell
关注(0)|答案(2)|浏览(107)

我正在编写一个Shell脚本,以便更轻松地切换AWS配置文件

#!/bin/bash
PROFILES=$(aws configure list-profiles)
arr=($PROFILES)

PS3='Please enter your choice: '
select opt in "${arr[@]}"
do
    case $opt in
         $opt)
            echo "Selecting ${opt}"
            export AWS_PROFILE="${opt}"
            ;;
         "Quit")
            break
            ;;   
         *) echo "invalid option $REPLY";;
    esac
done

字符串
一切看起来很好,我可以从列表中选择我的配置文件。但问题是,我想选择退出选项退出程序。例如,列表中包含3个配置文件。输出是
1.型材1
1.型材2
1.型材3
期望的结果是当我输入4,程序将退出,如果我输入5或其他不同的东西,它将打印出无效的选项$RESIDE.实际结果是什么都没有发生,当我输入4或其他任何东西.谢谢大家

nr7wwzry

nr7wwzry1#

那么,你应该能够直接检查输入的数字。

PROFILES=$(aws configure list-profiles)
arr=($PROFILES)
pronum=$(echo "$PROFILES"|wc -l)
echo -n "choose one>"
read id
if [ $id -ge 1 -a $id -le $pronum ] ; then
  echo "You chose ${arr[$(($id-1))]}"
elif [ $id -eq 4 ] ;  then
  echo "Exit"
else
  echo "$id is invalid"
fi

字符串

eqqqjvef

eqqqjvef2#

在@WeDBA的帮助下,我创建了这个脚本,以交互方式为shell设置AWS_PROFILE变量。

# Function to set AWS_PROFILE using fzf
set_aws_profile() {
  local aws_config_file="$HOME/.aws/config"

  # Get all profile names from AWS config file
  profile_names=($(aws configure list-profiles))
  
  # Use fzf for profile selection
  selected_profile=$(printf '%s\n' "${profile_names[@]}" | fzf --prompt="Select AWS Profile: ")
  
  # Set the selected profile to AWS_PROFILE environment variable
  export AWS_PROFILE="$selected_profile"
  
  # Optionally, print the selected profile for verification
  echo "Selected AWS Profile: $AWS_PROFILE"
}

字符串
把它放在你的zsh配置文件中。如果你愿意,你可以用bash试试。
1.在shell中,你可以调用set_aws_profile,你会得到一个交互式的fzf选择器。
1.选择要使用的配置文件,然后它将为您设置AWS_PROFILE env变量。

相关问题