简单bash程序#2
我想编写bach shell脚本,它接受三个参数:文件名、目录名和一个数字 若并没有三个参数,或者第三个参数不大于0,或者第一个参数不是文件,或者第二个参数不是目录,则应报告错误 如果一切正常,则应将文件复制三次到目录中 我的代码会自动打印错误,我如何才能实际加载这些参数,并且由于没有报告错误,代码中的所有内容都正确吗?我是这方面的初学者简单bash程序#2,bash,Bash,我想编写bach shell脚本,它接受三个参数:文件名、目录名和一个数字 若并没有三个参数,或者第三个参数不大于0,或者第一个参数不是文件,或者第二个参数不是目录,则应报告错误 如果一切正常,则应将文件复制三次到目录中 我的代码会自动打印错误,我如何才能实际加载这些参数,并且由于没有报告错误,代码中的所有内容都正确吗?我是这方面的初学者 #!/bin/bash if [ $# -ne 3 ] then echo "Mistake" exit
#!/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
(但是,每个连续副本只会覆盖以前的文件;您必须为每个输出文件生成特定的名称。)