2014-01-21 47 views
0

我有一個用於shell腳本的用例,我希望用戶選擇文件中提到的文件。該選擇可用於使用其他命令安裝選定的軟件包。 我已成功創建目錄中所需文件的列表。 我需要幫助來填充它們的情況下,用戶可以選擇文件並進行進一步的操作。 我已經使用這個寫所需文件名的文件:Shell腳本根據文本文件中提到的文件名創建case語句

dir=/root/vaibhav/install_package 
> choices 
for entry in "$search_dir"$dir/*.zip 
do 
    echo "$entry" | cut -d "/" -f5 >> choices 
done 

選擇文件的輸出是這樣的:

content_abc.zip 
content_xyz_test.zip 
content_aacd_to_qa.zip 

現在我想的腳本來讀取這個文件,並將其轉換int選擇,用戶可以進一步採取行動。 這就是我想要的:

case "<read_thefile" 
1)<firstLine_from_file> 
    Do some actions 
;; 
2)<secondline_fromfile> 
    do some actions 
;; 
esac 

在這幫助我。

+0

我試圖填充列表使用下面的腳本,但是失敗: 我在'ls -a packages/*。zip'中 做了 echo $ i「,」| cut -d「/」-f2 >> files done file ='cat files' OIFS = $ IFS; IFS =「,」; file1 = $ {file}; ((a = 0; a <$ {#file1 [@]}; a ++));}的 。 do echo「File $ a - >」$ {file1 [$ a]} done; IFS = $的OIF;' 它給出了輸出爲: 文件0 - > content_abc.zip content_xyz_test.zip content_aacd_to_qa.zip 我希望它爲: 1. content_abc.zip 2. content_xyz_test.zip 3. content_aacd_to_qa.zip 另外我不知道如何動態地填充選擇對這些文件執行操作。在這方面幫助我。 – Vaibhav

回答

0

基本上你可以做兩件事情在你的腳本:

  1. 產生case(或select)從模板轉換,把它寫入一個文件,源該文件。這可以工作,但如果輸入文件(拉鍊列表)不可靠,我不會推薦它。
  2. 顯示列表中的東西,如nl list_of_zips,然後read來自用戶的輸入,並根據這個數字可以從list_of_zips挑線,如:

    nl list_of_zips 
    # 1 OUTPUT_LINE1 
    # 2 OUTPUT_LINE2 
    ### now read the choice 
    read choice 
    ### and get the choice line from the file 
    zip_file_choosen=$(awk "NR==$choice {print ; exit }") 
    ### and do what you want with $zip_file_choosen ... 
    
相關問題