bash脚本中的间距有问题

问题描述

我正在尝试使用find命令作为条件执行if / else。由于目录中的间距,导致出现错误。我在这里和Google上进行了大量搜索,无法解决此问题。谢谢您的提前帮助。

我的代码

 <div class="container">
        <p class="h3_default">Some header</p>
        <div class="row">
            <div class="col p-2">
                <p class="p_default">
                    <img class="m-2" src="img/apple.jpg" alt="spanish apple" align="left">
                </p>
                <p class="p_default">
                    Lorem ipsum dolor sit amet consectetur adipisicing elit. Blanditiis similique numquam provident
                    placeat esse! Aliquam numquam amet alias molestiae voluptatum quis veritatis voluptate,adipisci
                    repellat aspernatur magni ad aperiam perferendis dolorem. Eum tempore aperiam doloremque
                    doloribus voluptatum rem molestiae adipisci sit,optio beatae sapiente,accusantium quaerat
                    aspernatur fugiat cumque praesentium asperiores voluptates accusamus labore,sunt magnam ullam.
                    Doloremque deserunt ipsam ipsum mollitia beatae odit totam,eius magni quas tempora quis
                    molestiae maiores,explicabo aliquid possimus! Nobis consequatur alias,cum hic dicta rerum eos
                    praesentium impedit nesciunt quas,cumque animi distinctio officia minima? Debitis minima
                    nesciunt dicta possimus officia esse quidem,perferendis distinctio. Numquam,quidem. Iste
                    accusantium,autem itaque error ducimus aut dignissimos eaque voluptatem vitae,dolor expedita
                    eveniet placeat nobis?
                </p>

            </div>
        </div>
    </div>

结果:

#!/usr/bin/bash
dir="/to/Two Words/test/"
file="test.txt"

if [ `find $dir -name $file` ];
then
    echo "File $file is in $dir"
else
    echo "$file is not in $dir"
fi

解决方法

您必须双引号$dir来避免word splitting,但无论如何 不起作用:

$ ./f.sh
./f.sh: line 5: [: space: binary operator expected

您要

#!/usr/bin/bash
dir="/to/Two Words/test/"
file="test.txt"

if [[ -n "$(find "$dir" -name "$file")" ]]
then
    echo "File $file is in $dir"
else
    echo "$file is not in $dir"
fi
,

if不需要[来执行命令,但是find即使未找到文件也返回0。尝试将管道与grep一起使用。

if find "$dir" -name "$file" | grep .

如果匹配失败,则grep将返回false。

,

由于空白,$dir扩展为两个参数;添加引号以防止出现这种情况,find "$dir" ...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...