提示用户选择带有bash脚本的目录并读取结果

Joh*_*ger 15 macos bash shell

我希望用bash脚本读取一个目录(实际上我使用的是zsh).

我想在同一目录中列出当前文件夹并将其显示给用户,要求他们输入一个数字以选择正确的文件夹.

Please select a Folder eg, 1,2,3.
1. Folder Name 1 (this should the actual name of the folder in the dir
2. Folder 2
3. Folder 3.
Run Code Online (Sandbox Code Playgroud)

我也希望能够转换输入,例如1.回到实际的文件夹名称,所以我可以

cd ./$foldername/
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.干杯,约翰.

Chr*_*sen 28

除非您的格式要求非常严格,否则您可以使用bashselect构造.

以下代码将显示当前目录中所有目录的菜单,然后是所选目录的chdir:

printf "Please select folder:\n"
select d in */; do test -n "$d" && break; echo ">>> Invalid Selection"; done
cd "$d" && pwd
Run Code Online (Sandbox Code Playgroud)

  • 精彩绝伦。经过测试和工作,像个迷。谢谢!就像我想要的那样工作。干杯,约翰。 (2认同)

amp*_*ine 5

#!/bin/bash

dirs=(*/)

read -p "$(
        f=0
        for dirname in "${dirs[@]}" ; do
                echo "$((++f)): $dirname"
        done

        echo -ne 'Please select a directory > '
)" selection

selected_dir="${dirs[$((selection-1))]}"

echo "You selected '$selected_dir'"
Run Code Online (Sandbox Code Playgroud)