shell - 如何将多个文件作为参数传递给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()
解决方案
几乎正确,但是:
(1) 您正在使用$@
. 如果传递的参数包含空格,这将中断。你应该使用"$@"
.
(2) 在您的echo
命令中,您引用了一个files
未设置的变量。在您的cp
中,您正确地指的是file
.
实际上,您的功能可以简化一点:
copyFiles()
{
cp -vf "$@" $TARGET_DIR
}
的使用-v
消除了对echo
.
推荐阅读
- java - Wildfly 查询字符串包含 // 用单斜杠 (/) 替换其中 servlet 使用发送重定向(302 代码)
- lldb - 是否有 lldb 等效于 gdb 的“bt full”?
- github - 为什么“内容安全策略”的自定义标头在 github 上不起作用?
- chart.js - 如何使用 ng2-charts 更新圆环图的 css
- javascript - Firebase 错误:进程以代码 16 退出进程。
- reactjs - 为什么当我通过 setState 更新对象时会出现无限循环?
- google-cloud-platform - Google VM 实例域问题
- python - 无法将消息发送到不和谐频道 discord.py
- python - 将字符串转换为具有不同格式python的日期时间对象
- elasticsearch - Logstash 到 Elasticsearch 在字段中添加新数据而不是覆盖现有数据?