制作简单的 BASH Shell 脚本,该脚本接受两个参数,检查它们,然后将第一个(文件)参数复制到第二个(目录)参数

制作简单的 BASH Shell 脚本,该脚本接受两个参数,检查它们,然后将第一个(文件)参数复制到第二个(目录)参数

几天前我开始学习如何在 shell 中制作脚本。如何制作带有两个参数(文件名和某个目录)的脚本,如果参数不好我想发出错误警报,如果它们正确我想复制给定目录中的文件?到目前为止我做了这个:

#!/bin/bash
if [ -d $1 ] ; then
 ???
 done
else
 echo $1 NOT DIRECTORY
 exit 1
fi

我单独制作了一个用于检查文件的部分。如何将这些放在一起?

#!/bin/bash
if [ $# -ne 1 ]
then
 echo "Use- $0 file"
 exit 1
fi
if [ -f $1 ]
then
 echo "$1 There is no file with that name"
else
 echo "$1 There is no file with that name"
fi

我是 bash 脚本的新手,所以我想获得一些帮助。

答案1

您可以使用这样的结构:

  • 首先检查参数的数量是否正确,在本例中为 2

    if arguments not 2
      message "Not enough arguments" and exit
    
  • 检查参数是否是有效的文件和目录。

    if argument1 not a file
      message "Not af file" and exit
    
    if argument2 not a directory
      echo "Not a directory" and exit
    
  • 如果两个参数都正确,则执行复制:

    message "Copying file"
    copy file to directory
    

请记住在出现错误时退出,这样脚本就不会继续运行。

您还可以使用一个衬垫来代替 if:

[[ ! -f "$1" ]] && echo "Not a file" && exit

相关内容