在if语句中传递参数

时间:2016-08-09 10:21:54

标签: bash shell unix if-statement

在下面的代码我试图搜索文件。 在这里,我想排除那些以'#'开头的文件

请帮我解决这个问题。

#!/bin/bash
while read -r name
    do
        if [[ $name!= "#" ]]
        then
            find ./2016* -name *files.txt
        fi
done < file.txt

低于错误:

conditional binary operator expected
syntax error near `"#"'
           if [[ $name!= "#" ]]

2 个答案:

答案 0 :(得分:3)

  1. $name!=

  2. 之间添加空格
  3. 您需要排除以#开头的行。不只是只有#的行。为此,将模式更改为"#*"

  4. name命令中使用变量find

  5. #!/bin/bash

    while read -r name
        do
            if [[ $name != "#*" ]]
            then
                find ./2016* -name "$name"
            fi
    done < file.txt
    

    此处提到了排除注释行的更好方法 - bash loop skip commented lines

答案 1 :(得分:1)

空格和双引号很重要。在$name!=之间保留空格 并为./2016**files.txt

插入双引号
#!/bin/bash

while read -r name
 do
    if [[ $name != "#" ]]
    then
       find "./2016*" -name "*files.txt" 
    fi
 done < file.txt