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

$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 に答える