Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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删除Unix中的文件_Bash_Unix - Fatal编程技术网

使用bash删除Unix中的文件

使用bash删除Unix中的文件,bash,unix,Bash,Unix,我正在尝试从我的计算机中删除大量文件,我正在尝试使用rm命令编写bash脚本来执行此操作。我想知道的是如何在bash中实现平等,以及为什么我的代码(发布在下面)无法编译。谢谢你的帮助 #!/bin/bash # int-or-string.sh b="0000" c="linorm" f=500 e1=2 e2=20 e3=200 e4=2000 for i in {0..10000} do a=$(($f*$i)) if ["$i" -eq "$e1"] then b="

我正在尝试从我的计算机中删除大量文件,我正在尝试使用
rm
命令编写bash脚本来执行此操作。我想知道的是如何在bash中实现平等,以及为什么我的代码(发布在下面)无法编译。谢谢你的帮助

#!/bin/bash
# int-or-string.sh
b="0000"
c="linorm"
f=500
e1=2
e2=20
e3=200
e4=2000
for i in {0..10000}
 do
  a=$(($f*$i))
  if ["$i" -eq "$e1"]
   then
   b="000"
   echo $b$
  fi
  if ["$i" -eq "$e2"]
   then
   b='00'
  fi
  if ["$i" -eq "$e3"]
   then
   b='0'
  fi
  if ["$i" -eq "$e4"]
   then
   b =''
  fi
  if [bash$ expr "$i" % "$e3$ -ne 0]
   then
   d = $b$c$a
   rm d
  fi
done
  • Shell脚本根本不需要编译

  • [
    之后和
    ]
    之前需要空格

    if [ "$i" -eq "$e1" ]
    
  • 里面有一个错误的
    bash$
    ,你可能根本不想要。它可能是一个
    $()
    操作符:

    if [ $(expr "$i" % "$e3") -ne 0 ]
    
  • bash中的
    =
    周围不能有空格。例如,将
    b='
    更改为
    b='
    ,将
    d=$b$c$a
    更改为
    d=$b$c$a

  • echo$b$
    看起来应该是
    echo$b

  • Shell脚本根本不需要编译

  • [
    之后和
    ]
    之前需要空格

    if [ "$i" -eq "$e1" ]
    
  • 里面有一个错误的
    bash$
    ,你可能根本不想要。它可能是一个
    $()
    操作符:

    if [ $(expr "$i" % "$e3") -ne 0 ]
    
  • bash中的
    =
    周围不能有空格。例如,将
    b='
    更改为
    b='
    ,将
    d=$b$c$a
    更改为
    d=$b$c$a

  • echo$b$
    看起来应该是
    echo$b


  • Shell脚本不编译它是一种脚本语言

    尝试修复此行:

    if[bash$expr“$i”%”“$e3$-ne 0]

    如下所示:


    如果[$(expr“$i”%”“$e3$”)-ne 0]

    Shell脚本未编译,则它是一种脚本语言

    尝试修复此行:

    if[bash$expr“$i”%”“$e3$-ne 0]

    如下所示:

    if[$(expr“$i”%”“$e3$”)-ne 0]

    • 在方括号周围需要空格。
      [
      实际上是一个命令,与所有命令一样,需要用空格表示
    • 在shell中为变量设置值时,不会在等号周围放置空格
    • 在进行比较和设置值时使用引号,以帮助描述值
    • 如果条件均不为真,且未设置$b,会发生什么情况
    • 这段代码背后的逻辑是什么。它似乎是一堆随机的东西。您将
      $
      从1增加到10000,但仅在其中四个值上设置
      $b
      的值。每200步,您删除一个文件,但
      $b
      可能会被设置,也可能不会被设置,即使它是文件名的一部分
    • 这个程序是你自己写的吗?你试过运行吗?你遇到了什么错误?你有没有查看这些错误引用的行。看起来你在命令中包含了
      bash$
      提示符
    有很多错误,我已经清理了其中的大部分。清理后的代码发布在下面,但这并不意味着它可以满足您的要求。您所说的只是想删除计算机上的“大量文件”,但没有给出其他标准。您还说“我想知道的是如何在bash中实现平等”这不是你在标题中提到的问题

    这是代码。请注意这些更改,它可能会导致您想要的任何答案

    #!/bin/bash
    # int-or-string.sh
    b="0000"
    c="linorm"
    f=500
    e1=2
    e2=20
    e3=200
    e4=2000
    for i in {0..10000}
    do
        a=$(($f*$i))
        if [ "$i" -eq "$e1" ]
        then
            b="000"
        elif [ "$i" -eq "$e2" ]
        then
            b='00'
        elif [ "$i" -eq "$e3" ]
        then
            b='0'
        elif [ "$i" -eq "$e4" ]
        then
            b=''
        fi
        if ! $(($i % $e3))
        then
            d="$b$c$a"
            rm "$d"
        fi
    done
    
    错误:

    • [
      ]
    • rm“$d”命令最初是
      rmd
      ,它只会删除名为
      d`的文件
    • if/then
      语句转换为
      if/else if
    • 重写
      [$(expr“$1”%“$e3”)-ne 0]
      • 不需要
        expr
        ,因为BASH有
        $(..)
        语法
      • 不需要测试命令(
        [
        ),因为
        if
        会自动将零计算为真,将非零计算为假
    • 添加了引号
        • 方括号周围需要空格。
          [
          实际上是一个命令,与所有命令一样,需要用空格来表示
        • 在shell中为变量设置值时,不会在等号周围放置空格
        • 在进行比较和设置值时使用引号,以帮助描述值
        • 如果条件均不为真,且未设置$b,会发生什么情况
        • 这段代码背后的逻辑是什么。它似乎是一堆随机的东西。您将
          $
          从1增加到10000,但仅在其中四个值上设置
          $b
          的值。每200步,您删除一个文件,但
          $b
          可能会被设置,也可能不会被设置,即使它是文件名的一部分
        • 这个程序是你自己写的吗?你试过运行吗?你遇到了什么错误?你有没有查看这些错误引用的行。看起来你在命令中包含了
          bash$
          提示符
        有很多错误,我已经清理了其中的大部分。清理后的代码发布在下面,但这并不意味着它可以满足您的要求。您所说的只是想删除计算机上的“大量文件”,但没有给出其他标准。您还说“我想知道的是如何在bash中实现平等”这不是你在标题中提到的问题

        这是代码。请注意这些更改,它可能会导致您想要的任何答案

        #!/bin/bash
        # int-or-string.sh
        b="0000"
        c="linorm"
        f=500
        e1=2
        e2=20
        e3=200
        e4=2000
        for i in {0..10000}
        do
            a=$(($f*$i))
            if [ "$i" -eq "$e1" ]
            then
                b="000"
            elif [ "$i" -eq "$e2" ]
            then
                b='00'
            elif [ "$i" -eq "$e3" ]
            then
                b='0'
            elif [ "$i" -eq "$e4" ]
            then
                b=''
            fi
            if ! $(($i % $e3))
            then
                d="$b$c$a"
                rm "$d"
            fi
        done
        
        错误:

        • [
          ]
        • rm“$d”命令最初是
          rmd
          ,它只会删除名为
          d`的文件
        • if/then
          语句转换为
          if/else if
        • 重写
          [$(expr“$1”%“$e3”)-ne 0]
          • 不需要
            expr
            ,因为BASH有
            $(..)
            语法
          • 不需要测试命令(
            [<