我有一个脚本,列出目录中的所有文件,按字母顺序列出它们,并将文件号放在文件名之前。
#!/bin/bash
x=1
cd ~/bin
for f in *
do
if [ -f $f ]; then
echo "$x: $f"
declare a$x=$f
x=$(expr $x + 1)
fi
done
read -p "What would you like to execute?: " num
$num
输出
1: file0
2: file1
3: file2
等
运行$ num将执行命令
a1
这不是命令。我想要做的是运行$ a1等于(即file0)。我怎么能这样做?
答案 0 :(得分:1)
看起来您正在实施select
内置命令:
PS3="What would you like to execute?: "
select cmd in *; do
$cmd
break
done
答案 1 :(得分:0)
您必须使用eval命令:
eval \$a0
希望这有助于=)
编辑:修正了缺少反斜杠