2017-05-01 14 views
0

こんにちは、私はBashで新しく、スペースで入力を読み込む際に問題があります。 「ネームスペース」、それは動作しません、名前のスペースサインので、同じ -Bash Zenity Spacesフォーム - 読み込み入力

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 

私は、フォルダ内のファイルを検索しようとしています:私はzenityを使うを使用 が、これは私のコードです。

スペースでどうすればいいのか分かっている場合は、助けてください。 ありがとうございました!

答えて

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シェルは大文字で変数を使用します。名前の衝突を避けるため、変数を使用しないでください。

3)可変連結の中にはいくつかの間違いがありましたが、それらを修正しました。

注:お使いのユーザーは、このような(ルートディレクトリ用)/folder/または/としてスラッシュ、を含むディレクトリ名を入力する必要があります。

こちらがお役に立てば幸いです。

+0

私は別の質問があります。タイプmp3ですべてのファイルを検索したいときのコマンドの表示方法は?これはうまくいきません find: '/ home/mint/- Disc 1/*。mp3' – Eken

+0

'find'(例:find -iname * .mp3)の' iname'オプションを調べてください。 https://linux.die.net/man/1/findを参照してください。何かにこだわったときは、コマンドのマニュアルページを探すのが良いでしょう。この場合、 "find man linux"を検索することができます。がんばろう! –

関連する問題