2015-09-03 115 views
0

聽起來像一個相當複雜的問題,但事實並非如此。我忙於在bash腳本中創建一個菜單,並且作爲case語句的一部分,我試圖調用另一個我剛剛創建的腳本,它編輯了一個文件,並且它正在打破。這裏有一個例子:如何在bash腳本的select語句中調用腳本

#!/bin/bash 

PS3="Please choose an option: " 
options=("Do this" "Do nothing") 
select opt in "${options[@]}" 
do 
    case $opt in 
     "Do this") 
     read -p "Please enter the file name:`echo $'\nE9> '`" FILENAME 
     getscript $FILENAME 
     break 
     ;; 
     "Do nothing") 
     break 
     ;; 
    esac 
done 

,我從這個得到的錯誤如下:getscript: command not found

爲了說明這個作品,我從正常的命令提示符跑getScript加入,它仍然有效:

$ getscript randomfilename.txt 
done 

的問題...有問題的getscript.sh腳本位於/usr/local/bin和我有它的.bashrc在我的當前用戶目錄中創建一個別名,這讓我打電話更詳細一點,萬一僅限。

請幫忙?

+1

腳本中不存在別名。 – Biffen

+0

您可以通過指定完整路徑來解決問題,即/usr/local/bin/getscript.sh $ FILENAME –

+0

我建議使用另一種方法。腳本中不支持別名。如果它解決了您的問題,請接受我的回答。 – Umer

回答

1

Biffen是正確的,別名似乎不能在腳本中工作。因此,所有我需要做的是添加.SH上月底,它的工作完美......爲了說明,如果有人需要這樣的未來:

PS3="Please choose an option: " 
options=("Do this" "Do nothing") 
select opt in "${options[@]}" 
do 
    case $opt in 
     "Do this") 
     read -p "Please enter the file name:`echo $'\nE9> '`" FILENAME 
     getscript.sh $FILENAME 
     break 
     ;; 
     "Do nothing") 
     break 
     ;; 
    esac 
done 

就像一個魅力:)。謝謝各位

0

這些行添加到結束的~/.bashrc

function getscript() { 
    /usr/local/bin/getscript.sh "[email protected]" 

} 
export -f getscript 

$ source ~/.bashrc 

這之後將解決這個問題。如果你沒有source包,那麼你需要安裝它。

+0

從其他目錄運行它非常好。問題是試圖在腳本中使用別名。 – Biffen

+0

更新後的答案不是使用替代方法。 – Umer

+0

不是一個非常便攜的'解決方案'。 – Biffen