我正在尝试使用工作目录的文件名填充bash脚本中的Select对话框。
是否可以这样做:
ls | egrep 'somefilter' > foo.txt
dialog --backtitle "Linux Shell Script" --title "Main\
Menu" --menu "Move using [UP] [DOWN],[Enter] to\
Select" 15 50 3\
0 "line of foo.txt"
1 "2nd line of foo.txt"
..etc 2>/tmp/menuitem.$$
回复更新!
IFS=$'\n\t'
dialog --backtitle "Converter v0.1b" --title "Select File\
$(($counter+1))\\$na" --menu "Move using [UP] [DOWN],[Enter] to\
Select" 15 50 8 $LINES 2>/tmp/menuitem.$$
menuitem=`cat /tmp/menuitem.$$`
如上所述,它正确填写选择列表,任何关于如何获得选择号X的想法(假设3 = movie.mkv)。
现在:menuitem = 3(如果我在列表中选择了数字3)。
需要弄清楚如何让它说电影.mkv。 试了一堆,没办法。
答案 0 :(得分:3)
这样的东西?
filter()
{
NUM=0
ls | egrep 'somefilter' | while read i ; do
echo $NUM $i
NUM=$(($NUM+1))
done
}
LINES=$(filter)
dialog --backtitle "Linux Shell Script" --title "Main\
Menu" --menu "Move using [UP] [DOWN],[Enter] to\
Select" 15 50 3 $LINES 2>/tmp/menuitem.$$
(如果文件名中有空格,则无效)
编辑:这是一个丑陋的空间解决方案(好吧,它是一个bash脚本......):
filter()
{
NUM=0
ls | egrep 'somefilter' | while read i ; do
echo $'\t'$NUM$'\t'$i
NUM=$(($NUM+1))
done
}
LINES=$(filter)
IFS=$'\n\t'
dialog --backtitle "Linux Shell Script" --title "Main\
Menu" --menu "Move using [UP] [DOWN],[Enter] to\
Select" 15 50 3 $LINES 2>/tmp/menuitem.$$
unset IFS
<强> EDIT2:强> 使用它来检索所选的文件名:
ITEM=$(cat /tmp/menuitem.$$)
FILE=$(echo "$LINES" | sed -n 's/\t'$ITEM'\t//p')