1

我有一个脚本,它列出了目录中的所有文件,按字母顺序列出它们,并将文件的编号放在文件名之前。

#!/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

ETC

运行 $num 将执行命令

a1

这不是命令。我想要做的是运行$a1 等于(即file0)。我怎样才能做到这一点?

4

2 回答 2

1

看起来您正在实现select内置命令:

PS3="What would you like to execute?: "
select cmd in *; do
    $cmd
    break
done
于 2012-09-30T14:33:55.483 回答
0

您必须使用 eval 命令:

eval \$a0

希望这会有所帮助=)

编辑:修复丢失的反斜杠

于 2012-09-30T03:31:36.130 回答