简单bash程序#2

简单bash程序#2,bash,Bash,我想编写bach shell脚本,它接受三个参数:文件名、目录名和一个数字 若并没有三个参数,或者第三个参数不大于0,或者第一个参数不是文件,或者第二个参数不是目录,则应报告错误 如果一切正常,则应将文件复制三次到目录中 我的代码会自动打印错误,我如何才能实际加载这些参数,并且由于没有报告错误,代码中的所有内容都正确吗?我是这方面的初学者 #!/bin/bash if [ $# -ne 3 ] then echo "Mistake" exit

我想编写bach shell脚本,它接受三个参数:文件名、目录名和一个数字

若并没有三个参数,或者第三个参数不大于0,或者第一个参数不是文件,或者第二个参数不是目录,则应报告错误

如果一切正常,则应将文件复制三次到目录中

我的代码会自动打印错误,我如何才能实际加载这些参数,并且由于没有报告错误,代码中的所有内容都正确吗?我是这方面的初学者

  #!/bin/bash
   if [ $# -ne 3 ]
   then 
   echo "Mistake" 
   exit 1
   fi
   if [ -f "$1" ]; then
      if [ -d "$2" ] ; then
         if [ "$3" -gt 0 ]; then
            for ((i=0;i<$3;i++));
            do
              cp "$1" / "$2"
            done
            fi
            fi
  else 
      echo "Mistake"
      exit 1
      fi
#/bin/bash
如果[$#-ne 3]
然后
回应“错误”
出口1
fi
如果[-f“$1”];然后
若[-d“$2”];然后
如果[“$3”-gt 0];然后

对于((i=0;i您实际如何运行代码?另外,您希望您的
cp
做什么,因为在编写时,它会尝试将您的根文件系统复制到
$2
(这将失败,因为您没有使用
-r
选项)(除非$1恰好是
-r
,并且实际上有一个名为
-r
的文件,但这是另一个问题的问题)。如果您传递了正确的参数,则代码本身也可以。@chepner我只想将作为参数1的文件复制到作为paramater2的目录中3次。我的代码会自动打印错误,因此,如何实际输入参数?那么您不需要在全部;使用
cp--“$1”“$2”
--
可防止任何奇怪的文件名被误认为是
cp
支持的选项)问题仍然是,在运行脚本时,如何指定这两个参数?如果这是实际问题,则与向
cp
提供参数的方式相同:在命令名后列出它们。如果使用
bash myScript
运行脚本,则为
bash myScript some.txt someDir 3
(但是,每个连续副本只会覆盖以前的文件;您必须为每个输出文件生成特定的名称。)