So I want to write one for the init in the initrd.gz
So far it works quite well, except when the selected line contains IFS chars (spaces):
Code: Select all
select(){
#bash:select PUPPY_SAVE_TO_LOAD in $SAVE_FILES ;do :;break;done
#bash:select PUPPY_SFS_TO_LOAD in $CHOOSE_PUP ;do :;break;done
[ "$1" -a "$2" = in -a "$3" ] || return 0
local NUMBER CONTENT c CHOICE
for content in "$3" ; do
c=$((c+1))
CONTENT="$CONTENT
${c}:$content"
done
echo "$CONTENT"
read -p '? :' -n 1 -t 20 NUMBER
echo
[ "$NUMBER" ] || NUMBER=1
CHOICE=`echo "$CONTENT" | grep -w "^ $NUMBER" | cut -f2 -d:`
echo \$1=$1 CHOICE=$CHOICE
#IFS='' eval `echo ${1}=$(echo "$CHOICE")`
#eval ${1}="$CHOICE"
#IFS="·" eval ${1}="$CHOICE"
#PATTERN="\${1}=$CHOICE"
eval "$PATTERN"
#eval `echo \${1}="$CHOICE"`
}