2014-09-30 46 views
1

我需要一個Linux腳本來問用戶他們是否要使用該程序,然後如果是的話,它需要問用戶什麼他們想要搜索的文件。目前,我創建了兩個文件,名爲terminalpi以測試我的腳本。linux:得到一個腳本,能夠問用戶的文件名,然後打開該文件

方案的預期結果將是:

welcome 
would you like to find a file?(if yes type 'y' if no type 'n' 

如果是的話,就應該繼續問他們想查找的文件,那麼它應該打印文件。

到目前爲止,我有這樣的:

#!/bin/bash 

hello "welcome!" 
while [ "$hello" != "n" ] 

do 
    echo "would you like to find a file?(if yes type 'y' if no type'n'" 
    read hello 
    case $hello in 
     y)  echo "what is the name of the file?" 
        read option 
        ***this is where the code i dont know should theroecticaly be*** 
     n)  echo "goodbye" 
    esac 
done 

就像我說的,預期的結果是,它會打印文件。如何才能做到這一點?

+0

您需要更具體地關於「打開」文件。您可以使用'cat filename'將文件「轉儲」到終端中,或者您可能想要在編輯器中打開文件?然後你必須問用戶他們喜歡哪個編輯器('vi,vim,pico,gedit等等)。閱讀shell的'select'命令。祝你好運。 – shellter 2014-09-30 09:57:18

回答

1

首先,你必須有一個錯誤:

hello "welcome" 

這不會做除非您的系統上有一個名爲hello的命令。要打印消息,請使用

echo "welcome" 

要在打印消息後從用戶處獲得輸入,請使用read。由於您使用的bash,您可以使用-p選項呈現消息,並保存用戶輸入一個命令:

read -p message" variable 

要查找並顯示文件的內容,你可以使用find命令及其-exec選項。例如,使用less來顯示文件-exec less

然後,你有其他各種錯誤。您的腳本的工作版本會是這樣的:

#!/usr/bin/env bash 

echo 'Welcome!' 

while [ "$response" != "n" ] 
do 
    read -p "Would you like to find a file? [y/n]:" response 
    case $response in 
     y) read -p "What is the name of the file? " file 
      find . -type f -name "$file" -exec less {} \; 
        ;; 

     n)  
      echo "goodbye" 
      exit ;; 
    esac 
done 
+0

謝謝!真的有幫助! – 2014-10-01 08:11:19

1

嘗試使用find命令。閱讀查找命令的man頁面。

find <dir_name> -name ${option} 

如果你想find文件並顯示其內容:

find <dir_name> -name ${option} | xargs cat 
0

或者

find . -name "<filename>" | xargs vim 
相關問題