0

この配列を作成して、ディレクトリの内容をリストし、ユーザーが正確なディレクトリ名の代わりに数字を入力できるようにしました。数字だけの入力から、選択したディレクトリの名前を取得する方法がわかりませんか? 使用される配列から正確にどのディレクトリが選択されたかを識別するために必要です。喜んで手伝ってくれるすべての人に感謝します。

if [ -d $TDDIR ]; then
# List folders in $TDDIR
VAR1=1
FILES=( `ls $TDDIR` )
FILECNT=${#FILES[*]}
# List number of folders available
clear
echo "Current list of folders to pick from."
echo
while [ $VAR1 -lt $FILECNT ]; do 
    echo -e "[$VAR1] \t ${FILES[VAR1]}"
    let "VAR1 += 1"
done
# Reduce VAR1 by one
let "VAR1 -= 1" 
# Have user choose which to use for scan
read -p "Which file would you like to scan 1 - $VAR1 or 0 to exit? :" INPUT
  if [ $INPUT -eq '0' ]; then 
    echo "You chose to quit. Exiting now." 
    sleep 2
    exit 0
  fi
while (( $INPUT > $FILECNT || $INPUT < 1 || $INPUT > $VAR1 )); do
echo
echo "You selected $INPUT."
read -p "$INPUT is not valid.  Choose a valid option: " INPUT
done
else    exit
fi
4

1 に答える 1

1
echo ${FILES[(($VAR - 1))]}

-1は、bash配列のインデックスが0から始まるためです。

補足として、lsはタスクには適切ではありません(ls出力の解析を参照) 。

また、メニューにselectを使用してみることもできます(Bashスクリプトのメニューと関数を参照) 。

于 2013-02-28T07:22:12.813 に答える