shell脚本 下拉选项 选择要跳转的路径

#!/bin/bash

# $# 是传给脚本的参数个数
# $0 是脚本本身的名字
# $1 是传递给该shell脚本的第一个参数
# $2 是传递给该shell脚本的第二个参数
# $@ 是传给脚本的所有参数的列表
# $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
# $$ 是脚本运行的当前进程ID号
# $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

# 变量前加一个 例如 变量 var="address" address="吕梁市方山县"   ${!var} ,表示获取变量名为var的值的变量的值
# 也就是先取var的值是address,然后再找名为address的变量的值  类似于C++中的指针
# choices=("aaa" "bbb" "ccc" "ddd")
# echo ${choices[@]}   aaa bbb ccc ddd
# echo ${!choices[@]}  0 1 2 3
# echo ${#choices[@]}  4  表示数组的长度
# ;; 连续分号 (Terminator) 专用在 case 的选项,担任 Terminator 的角色
# 用` `,()把命令括起来,然后赋值给变量  current_dir=$(pwd) 或者 current_dir=`pwd`


# 参数:
#   $1 - 选项数组
# 返回值:
#   用户选择的选项
# 定义选择函数

select_option() {
  choices=("$@")  # 将选项数组声明为全局变量
  selected=0      # 初始化选择索引

  while true; do
    clear
    for index in "${!choices[@]}"; do
      if [ $index -eq $selected ]; then
        printf "\033[31m> ${choices[$index]}\033[0m\n"  # 高亮显示选中的选项
      else
        echo "  ${choices[$index]}"
      fi
    done

    read -n1 -s key  # 读取单个按键并保持输入的隐私

    case "$key" in
      A)  # 上箭头
        if [ $selected -gt 0 ]; then
          selected=$((selected - 1))
        fi
        ;;
      B)  # 下箭头
        if [ $selected -lt $(( ${#choices[@]} - 1 )) ]; then
          selected=$((selected + 1))
        fi
        ;;
      "")  # 回车键
        break
        ;;
    esac
  done

  # 打印最终结果日志
  selected_option="${choices[$selected]}"
  # echo "最终选择:$selected_option" 

  # cd /opt/servers/jenkins_install/jar_homes/
}

# 定义选项数组
options=("/aaaa" "/bbbb" "/cccc" "/dddd" "/eeee" "/ffff")

# 调用选择函数,并将选项数组作为参数传入
select_option "${options[@]}"

# 显示用户选择的选项
# echo "你选择了:$selected_option"
cd "/opt/servers/jenkins_install/jar_homes/$selected_option"

current_dir=$(pwd)

echo "当前切换到的目录: $current_dir"

这里千万要记住 脚本不要使用 sh aaaa.sh来执行 ,而要使用 source  aaaa.sh 这种方式来执行脚本,否则会切换目录失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值