2012-09-30 47 views
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)。我怎樣才能做到這一點?

回答

0

必須使用eval命令:

eval \$a0 

希望這有助於=)

編輯:固定失蹤反斜槓

+0

謝謝Janito!這工作,除了我需要修改它,如: 'eval \ $ a $(echo $ num)' – Guvery

+0

沒問題,並感謝您的觀察!你能考慮接受答案嗎? =) –

1

看起來你正在實施select內置命令:

PS3="What would you like to execute?: " 
select cmd in *; do 
    $cmd 
    break 
done 
相關問題