【问题标题】:Bash Zenity Spaces Forms - Reading inputBash Zenity Spaces Forms - 读取输入
【发布时间】:2017-05-01 20:06:24
【问题描述】:

您好,我是 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

当我尝试在文件夹中搜索文件时 - “名称空间”它不起作用,因为空格符号与名称相同。

如果您知道如何使用空格进行操作,请提供帮助。 谢谢大家!

【问题讨论】:

    标签: bash forms search find zenity


    【解决方案1】:

    这是你的代码,修复了一些问题(现在可以使用):

    #!/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"
    

    一些cmets:

    1) 在给变量赋值或扩展变量时,建议使用双引号。这排除了word splitting。见this

    2) 避免使用大写形式的变量 - Bash shell 使用大写形式的变量,您应该避免这样做以避免名称冲突。

    3) 你的一些变量连接有一些错误,我已经修复了。

    注意:您的用户应输入包含正斜杠的目录名称,例如/folder//(用于根目录)。

    我希望这会有所帮助!

    【讨论】:

    • 我还有一个问题。当我想按示例 mp3 类型查找所有文件时,该命令的外观如何?找不到:'/home/mint/- Disc 1/*.mp3'
    • 您应该查看findiname 选项(例如:find -iname *.mp3)。见:linux.die.net/man/1/find。每当您遇到问题时,一个好的开始是查找命令的手册页,在这种情况下您可以搜索“find man linux”。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2011-06-21
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多