2017-05-01 102 views
0

嗨我是新的Bash和我有空間讀取輸入問題。 我用zenity,這是我的代碼:Bash Zenity空格形式 - 閱讀輸入

RESULT=$(zenity --forms --title="Title"\ 
    --text="Text"\ 
    --add-entry="File Name"\ 
    --add-entry="Directory") 


    NAME=$(echo $RESULT| cut -d '|' -f 1) 
    DIRECTORY=$(echo $RESULT| cut -d '|' -f 2) 

    if [ $DIRECTORY ]; then 
     COMMAND="$COMMAND $DIRECTORY " 
    fi 

    if [ $NAME ]; then 
     COMMAND="$COMMAND -name $NAME " 
    fi 

    find $COMMAND 

當我試圖搜索文件夾中的文件 - 「名稱空間」這是行不通的,因爲空間的跡象,與名稱相同。

如果您知道如何使用空格,請提供幫助。 謝謝大家!

回答

0

這是你的代碼,固定的一些問題(現在的工作):

#!/bin/bash 

result="$(zenity --forms --title="Title"\ 
    --text="Text"\ 
    --add-entry="File Name"\ 
    --add-entry="Directory")" 


    name="$(echo "$result"| cut -d '|' -f 1)" 
    directory="$(echo "$result"| cut -d '|' -f 2)" 

    if [ "$directory" ]; then 
     command="$directory" 
    fi 

    if [ "$name" ]; then 
     command="$command$name" 
    fi 

    find "$command" 

一些評論:

1)這是非常明智的,當你分配一個值用雙引號一個變量或者當你展開一個變量時。這排除了word splitting。見this

2)避免在大寫中使用變量--Bash shell在大寫中使用變量,您應該避免這樣做以避免名稱衝突。

3)你的一些變量連接有一些錯誤,我修正了這些錯誤。

注意:您的用戶應輸入包括正斜槓的目錄名稱,例如/folder//(用於根目錄)。

我希望這有助於!

+0

我還有一個問題。當我想通過鍵入示例mp3來查找所有文件時,該命令的外觀應如何?它不起作用 find:'/ home/mint/- Disc 1/*。mp3' – Eken

+0

您應該查看'find'的'iname'選項(例如:find -iname * .mp3)。請參閱:https://linux.die.net/man/1/find。無論什麼時候遇到困難,最好的一點是查找命令的手冊頁,在這種情況下,您可以搜索「find man linux」。祝你好運! –