使用 shell 脚本制作文件的多个副本

2024-02-24

我正在尝试编写一个小型 shell 脚本来制作文件的多个副本。我可以将文件名作为输入,但不能将副本数作为输入。这是我写的。但我无法通过NUMBER变量到for循环。

echo -n "Enter filename: "
read FILENAME
echo -n "Number of copies to be made: "
read NUMBER
for i in {2..$NUMBER}
do
cp -f $FILENAME ${FILENAME%%.*}"_"$i.csv
done

不幸的是它不是那样工作的。重击在参数扩展之前执行大括号扩展 http://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html#Shell-Expansions,所以你的大括号会先展开$NUMBER被评估。另请参阅重击陷阱 #33 http://mywiki.wooledge.org/BashPitfalls#for_i_in_.7B1...24n.7D,这解释了这个问题。

使用您的代码执行此操作的一种方法是:

for i in $(eval echo {2..$NUMBER})
do
# ...
done

或者,甚至更短:

for i in $(seq 2 $NUMBER)
# ...

(谢谢,格伦·杰克曼!)


请注意,通常,变量应该被引用 http://mywiki.wooledge.org/Quotes。这对于文件名尤其重要。如果你的文件被调用怎么办foo bar?那么你的cp -f会复制foo and bar因为参数被空格分隔。

所以,做这样的事情:

cp -f "$FILENAME" "${FILENAME%%.*}_${i}.csv"

虽然文件中不包含空格可能并不重要,但您应该自动执行引用变量以防止将来出现任何意外。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 shell 脚本制作文件的多个副本 的相关文章

  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并
  • IFS 分隔一个字符串,如“Hello”,“World”,“this”,“is,一个无聊”,“line”

    我正在尝试解析 csv 文件 但 IFS 遇到一些问题 该文件包含如下行 Hello World this is a boring line 各列用逗号分隔 因此我尝试使用以下代码分解该行 IFS read r a tempArr lt l
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • UDP 广播发送失败:在 Linux 2.6.30 上“网络无法访问”

    我用udp广播写了一个程序 代码段如下 struct sockaddr in broadcast addr socklen t sock len sizeof broadcast addr bzero broadcast addr sock
  • 如何在bash中仅提取两个字符串之间多行的第一个实例?

    我的文件是 abc 123 xyz abc 675 xyz 我想提取 abc 123 xyz 123 可以是任何东西 重点是我想要第一次出现 我尝试使用这个 sed n abc xyz p filename 但这给了我所有的例子 我怎样才能
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • 使用 Jenkins 运行 ios-sim

    我正在尝试使用以下命令从命令行启动我的应用程序ios sim https github com downloads pegli ios sim ios sim xcode4 3 tar gz但这就是我得到的 Started by user
  • 执行 rvm use 2.0.0 --default 时收到“警告!路径未正确设置”

    以上第一次不起作用 第二次起作用 尝试将任何新 shell 窗口的 ruby 版本设置为 2 0 0 Doing rvm use 2 0 0 default gives Warning PATH is not properly set up
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • shell脚本“x$VARIABLE”中x的用途[重复]

    这个问题在这里已经有答案了 我正在查看一些 shell 脚本 comarison shcu 中 x 的用途是什么 if x USER x RUN AS USER then su RUN AS USER c CATALINA HOME bin
  • 使用Sed查找并替换json字段

    我有一组 json 文件 其中在最后一个键值对之后有需要替换的逗号 RepetitionTime 0 72 TaskName WM Manufacturer Siemens ManufacturerModelName Skyra Magne
  • Bash:循环遍历字符串数组后无法读出带空格的字符串

    我正在使用循环读取数组的内容 该数组包含名为 music 的目录层次结构中的所有目录和文件 内容是 find 命令先前输出的字符串 这个想法是根据流派 艺术家和标题将 directory contents 中每个数组元素的完整目录路径分成子
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • `docker run` 输出到 bash 变量 - 奇怪的行为

    我看到一些奇怪的行为从docker run到 bash 变量中 简单的例子 bin bash PWD docker run rm ti ubuntu pwd 2 gt 1 also tried with PWD docker run wit
  • 错误:NVIDIA-SMI 失败,因为无法与 NVIDIA 驱动程序通信

    NVIDIA SMI 抛出此错误 NVIDIA SMI 失败 因为无法与 NVIDIA 通信 司机 确保安装了最新的 NVIDIA 驱动程序并且 跑步 我清除了 NVIDIA 并按照提到的步骤重新安装了它here https askubun
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • perf stat中的cycles注释是什么意思

    8 014196 task clock 0 004 CPUs utilized 204 context switches 0 025 M sec 32 cpu migrations 0 004 M sec 0 page faults 0 0
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进

随机推荐

  • 机器人框架传递 cookie 来获取请求 (RequestsLibrary) - TypeError

    我需要将 cookie 值传递给 Get 请求关键字才能使其工作 但它仍然失败 我不确定如何在那里正确传递它 关键字的文档介绍了标头 标头 与请求一起使用的标头字典 我有这样的测试 使用库RequestsLibrary Check requ
  • VC++ CRT Redist问题

    我使用 C 和 Visual Studio 2008 开发了一个 64 位 dll 并且尝试使用 regsvr32 exe 在目标计算机上注册它 我检查了清单文件 它清楚地说明了需要什么版本的 CRT
  • Net Core Web Api – 如何为 SwaggerDoc 映射Optional

    我在用着Optional
  • Rails 6.1、Ruby 3.0.0:测试错误,因为它们无法加载 rexml

    我使用 Ruby 3 0 0 从头开始 创建了一个新的 Rails 6 1 应用程序 我已经跑了db create并生成带有一些字符串列的单个模型 然后是rails db migrate I ran rails test但出现了 requi
  • 哪些解析器可用于解析 C# 代码? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 哪些解析器可用于解析 C 代码 我正在寻找一个可在 C 中使用的 C 解析器 它使我能够访问有关所分析代
  • 如何为 Filebeat 配置 JBoss JsonFormatter (WildFly 14)

    我有 Filebeat 从标准输出中提取日志 我想确保我的日志以 JSON 格式输出 以便可以正确解析它们 到目前为止 这是我发现的 org jboss logmanager formatters 没有 JSON 格式化程序 有一个 扩展
  • 将列表中的元素替换为另一个列表中的元素

    如何替换 a 中的元素list和另外一个 例如我想要所有two成为one 您可以使用 Collections replaceAll list two one From 文档 http docs oracle com javase 7 doc
  • 更新 mobx 中的状态时组件不会重新渲染

    我试图理解为什么当我更改 mobx 可观察名称数组中的状态时我的应用程序没有重新渲染 我正在使用输入标签更改值 希望得到一些帮助 观察者部分 import observable action autorun computed from mo
  • 无法在初始化程序中访问实例成员“widget”

    在我的项目中 我使用以下代码将数据从一个小部件传递到另一个小部件 Navigator push context MaterialPageRoute builder context gt TranslatorSignUpStep2 trans
  • 如何使用Python打开ppt文件

    我想在linux上使用Python打开一个ppt文件 就像python打开一个 txt文件 我知道win32com 但我正在linux上工作 那么 我需要做什么 python pptx https python pptx readthedo
  • 我的 Zend 框架“引用”混乱

    我有一个可能非常简单的问题 在 Zend Framework 手册或其他地方找不到令人满意的 主观看到的 答案 有很多方法可以将我的 php 变量移交给我的 sql 查询 以至于我失去了概述 并且可能我对一般引用缺乏一些理解 准备好的报表
  • 带回溯的数独求解算法

    我正在寻求实现一种非常简单的算法 该算法使用强力回溯来解决数独网格 我面临的问题是 在我的实现中 我包含了两个实例变量Sudoku类称为row and col 对应于表示数独网格的二维数组中空单元格的行和列 When my solve 方法
  • CodeIgniter 和 HMVC 问题

    首先 对这篇文章造成的任何不便表示歉意 因为这是我第一次在这里发布问题 我需要更多时间来适应这个问题 Q1 我想创建 2 个 主控制器 FrontEnd and BackEnd像这样 MY 控制器延伸CI 控制器 FrontEnd延伸MY
  • 对象字面量中属性名称周围的方括号意味着什么?

    我用JS写了一段时间了 还没有使用过这种形式 dist files bpr lib Monster min js the 它有效 我只是以前没有使用过或见过它 最近才使用 ES6 它们被称为 计算属性名称 From MDN https de
  • java中不使用乘法、除法和取模运算符来除两个整数

    我写了一个代码 该代码在将两个数字相除后找出商 但不使用乘法 除法或取模运算符 My code public int divide int dividend int divisor int diff 0 count 0 int fun di
  • 如何为 Android 启用 AllOpen 插件

    我正在尝试添加allopen https kotlinlang org docs reference compiler plugins html all open compiler plugin安卓插件 我把这个添加到我的build gra
  • 用于查找计划任务向导任务信息的脚本

    我知道有一个命令可以查找计算机的计划任务 但我想获取有关计划任务本身的更多信息 我想知道计划任务的执行时间和时间以及计划任务的名称和区域 有任何想法吗 Set TS CreateObject Schedule Service TS Conn
  • python,flask,网络应用程序安全[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在 Flask 上部署时 我想从 Web 应用程序编辑 sqlite 数据库 并且遇到了 chmod 权限问题 因此我只是让 root 以
  • 在 LESS 中生成供应商前缀

    我已经将这种方法拼凑在一起 使用 LESS 生成供应商前缀的属性和动画 首先是一些工厂函数 vendorprefix property value webkit property value moz property value ms pr
  • 使用 shell 脚本制作文件的多个副本

    我正在尝试编写一个小型 shell 脚本来制作文件的多个副本 我可以将文件名作为输入 但不能将副本数作为输入 这是我写的 但我无法通过NUMBER变量到for循环 echo n Enter filename read FILENAME ec