首页 > 解决方案 > 如何将多个文件作为参数传递给shell脚本中的函数

问题描述

当多个文件作为参数以正则表达式形式发送时,如何将文件一一复制到目标路径。

copyFiles()  
{  
  for file in $@  
  do  
    echo "File:" $files  
    cp -f $file $TARGET_DIR   #how to copy files one by one to destination path
  done  
}  
TARGET_DIR=destinationPath/Dir  
copyFiles sourcePathFiles/filename.*         #How to handle this in copyFiles()

标签: shell

解决方案


几乎正确,但是:

(1) 您正在使用$@. 如果传递的参数包含空格,这将中断。你应该使用"$@".

(2) 在您的echo命令中,您引用了一个files未设置的变量。在您的cp中,您正确地指的是file.

实际上,您的功能可以简化一点:

copyFiles()  
{
   cp -vf "$@" $TARGET_DIR
}

的使用-v消除了对echo.


推荐阅读