Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 坚持用",;应为二进制运算符“;消息_Bash_If Statement - Fatal编程技术网

Bash 坚持用",;应为二进制运算符“;消息

Bash 坚持用",;应为二进制运算符“;消息,bash,if-statement,Bash,If Statement,当我运行此命令时,遇到“预期的二进制运算符”消息: for variable in "ebooks" "movies" "games" "softwares" "music" "series" "tvreplay" do if [ -d /in/recep/downloader_ftp*/${variable} ] then mv /in/recep/downloader_ftp*/${variable}/* /in/arch/${variable}/

当我运行此命令时,遇到“预期的二进制运算符”消息:

for variable in "ebooks" "movies" "games" "softwares" "music" "series" "tvreplay"
do
    if [ -d /in/recep/downloader_ftp*/${variable} ]
    then
        mv /in/recep/downloader_ftp*/${variable}/* /in/arch/${variable}/ 
    else
        echo "no files type ${variable}"
    fi
done
我知道这是因为命令在recep目录中查找以模式“downloader\u ftp*”开头的2个目录,但我找不到好方法。

问题是:

-d /in/recep/downloader_ftp*/${variable}
扩展到

-d /in/recep/downloader_ftpxxx/${variable} /in/recep/downloader_ftpyyy/${variable}
如果在每个
downloader\u ftpxxx/yyy
目录中都有
variable==ebooks
和一个ebooks目录,则无法通过目录测试语法

修复方案,无第二个循环,只需检查
mv
是否有正确的退出代码:

for variable in "ebooks" "movies" "games" "softwares" "music" "series" "tvreplay"
do
     if mv /in/recep/downloader_ftp*/${variable}/* /in/arch/${variable}/  2>/dev/null
     then
        :  # OK
     else
        echo "no files type ${variable}"
     fi
done
问题是:

-d /in/recep/downloader_ftp*/${variable}
扩展到

-d /in/recep/downloader_ftpxxx/${variable} /in/recep/downloader_ftpyyy/${variable}
如果在每个
downloader\u ftpxxx/yyy
目录中都有
variable==ebooks
和一个ebooks目录,则无法通过目录测试语法

修复方案,无第二个循环,只需检查
mv
是否有正确的退出代码:

for variable in "ebooks" "movies" "games" "softwares" "music" "series" "tvreplay"
do
     if mv /in/recep/downloader_ftp*/${variable}/* /in/arch/${variable}/  2>/dev/null
     then
        :  # OK
     else
        echo "no files type ${variable}"
     fi
done

好吧,我在这个场景中所做的可能是这样的:

for type in "ebooks" "movies" "games" "softwares" "music" "series" "tvreplay"
do
    for dir in /in/recep/downloader_ftp*/${variable}
    do
        if [[ -d $dir ]]
        then
            mv $dir/* /in/arch/$variable/ 
        else
            echo "no files of type $variable in $dir"
        fi
    done
done

它所做的是,在每个子目录上循环(首先执行shell全局搜索),并检查它是否包含您想要的东西。

好吧,在这个场景中,我所做的可能是这样的:

for type in "ebooks" "movies" "games" "softwares" "music" "series" "tvreplay"
do
    for dir in /in/recep/downloader_ftp*/${variable}
    do
        if [[ -d $dir ]]
        then
            mv $dir/* /in/arch/$variable/ 
        else
            echo "no files of type $variable in $dir"
        fi
    done
done

它所做的是,在每个子目录上循环(首先执行shell全局搜索),并检查它是否包含您想要的商品。

。。预期的行为是什么?。。预期的行为是什么?我不介意否决票,请解释。我的解决方案比另一个更忠实于原来的问题,而且可能更快,因为没有内部for循环。我介意否决票——这似乎根本没有必要(-我不确定扔掉错误消息是否是个好主意,但其余的都可以。thx速度很快,但你是对的,最好检查
没有这样的文件或目录
消息,以防
mv
中发生另一个问题,比如访问权限,不管怎样……我没有投反对票,但是
x;如果[$?=0]
通常写得更简单
如果x
我投了反对票,因为在我投反对票的时候,答案没有包括解决方案,仅仅是对问题的解释;这可能很好——有时这就是所需要的——除了问题已经包括对问题的正确解释,所以答案仅仅是简单的重复问题中已经存在的内容。现在你已经解决了这个问题,我收回了我的否决票。我不介意否决票,请解释。我的解决方案比另一个更忠实于原始问题,而且可能更快,因为没有内部for循环。我介意否决票-似乎根本没有必要(-我不确定扔掉错误消息是否是个好主意,但其余的都可以。thx速度很快,但你是对的,最好检查
没有这样的文件或目录
消息,以防
mv
中发生另一个问题,比如访问权限,不管怎样……我没有投反对票,但是
x;如果[$?=0]
通常写得更简单
如果x
我投了反对票,因为在我投反对票的时候,答案没有包括解决方案,仅仅是对问题的解释;这可能很好——有时这就是所需要的——除了问题已经包括对问题的正确解释,所以答案仅仅是简单的重复问题中已经存在的内容。现在您已经解决了这个问题,我收回了我的否决票。您可以对模式*/中的目录执行
操作。
只循环匹配模式*的目录。您可以对模式*/中的目录执行
操作。
只循环匹配模式*