【问题标题】:Bash returns no such file or directory [duplicate]Bash没有返回这样的文件或目录[重复]
【发布时间】:2014-02-13 21:48:03
【问题描述】:

我从昨天开始遇到一个问题,试图在互联网上搜索如何解决它......没有结果。

就是这样。这是我的程序:

OTHERDIR="/tech/gtr/scripts/osm/scan-configs"
filename="IDF-952584-SW1-126.110.84.253"
estdifferent=true;
if $estdifferent ; then 
    x=0;
    for fic in `find $OTHERDIR/liste/ -type f -name $filename*` ; do
    {
    echo $fic
    if [[$fic == *bak*]] 
    then
            filename_tab[x]=$fic
            ((x++))
    fi
    }

我想检查 $fic 最后是否包含 * bak *

但是当它到达“if”指令时,调试会告诉我这个:

'[[/tech/gtr/scripts/osm/scan-configs/liste/IDF-952584-SW1-126.110.84.253_bak1' == '*bak*]]'

comparatif.sh: line 29: [[/tech/gtr/scripts/osm/scan-configs/liste/IDF-952584-SW1-126.110.84.253_bak1: No such file or directory

为什么它告诉我“没有这样的文件或目录”?我正在比较一个 var 和一个正则表达式。 (第 29 行是 IF $fic == * bak * 指令)

【问题讨论】:

    标签: string bash loops substring var


    【解决方案1】:

    比较中需要空格:

    if [[ $fic == *bak* ]] 
         ^             ^
    

    代替

    if [[$fic == *bak*]] 
    

    【讨论】:

    • 谢谢。我对这段代码还有另一个问题。如果我在循环下添加 echo "something" 程序正在为所有代码运行 "for" 循环,甚至是 echo。我的语法错了吗?
    • A for 循环从 dodone 执行,因此无需 {,只需使用该语法即可。如果您需要进一步解释,请使用当前代码更新您的问题。
    • 是的,我阅读了整个代码,我有一个“完成”标记没用。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多