Bash:变量未正确扩展[重复]

2023-12-05

我正在尝试使用变量重命名文件。但是,当我将变量插入到文件名的开头时,事情没有按预期工作。

情况如下,我有一个文件名测试:

$ ls
test

和一个变量i=1

将变量添加到文件名的末尾或中间时,它可以工作:

$ mv test test_$i
$ ls
test_1

将变量添加到文件名的开头时,它不起作用:

$mv test_1 test  
$mv test $i_test
mv: missing destination file operand after 'test'
Try 'mv --help' for more information.

更糟糕的是,当我的文件名中有扩展名时,该文件将被删除。

$ touch test.try
$ ls
test.try
$ mv test.try $i_test.try
$ ls
 (nothing!)

谁能向我解释一下吗?这是一个错误还是我不知道的东西?


你需要把{}围绕变量名以消除它与其余文字的歧义(记住,_是标识符中的有效字符):

mv test.try ${i}_test.try

或者,使用双引号,这样可以防止分词和通配符:

mv test.try "${i}"_test.try

在你的代码中:

$i_test     => shell treats "i_test" as the variable name
$i_test.try => shell treats "i_test" as the variable name ('.' is not a valid character in an identifier)

mv test.try $i_test.try => test.try got moved to .try as "$i_test" expanded to nothing.  That is why ls didn't find that file.  Use 'ls -a' to see it.

请参阅此相关帖子:在使用 Bash 的变量中什么时候需要花括号?

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

Bash:变量未正确扩展[重复] 的相关文章

  • Django 模板 - 我可以设置要在父模板中使用的变量吗?

    我有一个包含通用导航菜单的父模板 我希望能够添加class selected 到适当的菜单选项 我希望能够在子模板中设置变量 例如 set menu products and do ifequal menu products class s
  • 如何运行 bash 压缩脚本?

    有没有一种方法可以直接运行带有 参数 的压缩bash脚本 而无需将其解压缩到文件中 然后运行解压缩的文件 例如 我需要使用一些给定的参数执行 setup mysql gzip 压缩脚本 n wordpress locahost 而不先解压缩
  • Bash 目录上的 For 循环

    快速背景 ls src file1 file2 dir1 dir2 dir3 Script bin bash for i in src do if d i then echo i fi done Output src dir1 src di
  • 如果文件修改日期早于 N 天

    此问题涉及在文件的修改日期早于这么多天时采取行动 我确信创建日期或访问日期会类似 但对于修改日期 如果我有 file path name to some file N 100 for example N is number of days
  • 从文件中随机采样行

    我有一个大约 40gb 和 1800000 行的 csv 文件 我想随机采样 10 000 行并将它们打印到一个新文件中 现在 我的方法是将 sed 用作 sed n vars lt input txt gt output txt Wher
  • Shell 执行:时间与 /usr/bin/time

    当 bash zsh 执行以下操作时会发生什么 usr bin time l sleep 1 1 00 real 0 00 user 0 00 sys 516096 maximum resident set size 0 average s
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 带变量的 AWK 负正则表达式

    我在 bash 脚本中使用 awk 来比较两个文件以获取不匹配的行 我需要将第二个文件的所有三个字段 作为一个模式 与第一个文件的所有行进行比较 第一个文件 chr1 9997 10330 HumanGM18558 peak 1 150 1
  • 如何使用 jq 和 Bash 将 JSON 展平为 Key=Selector 的 Bash 关联数组?

    作为后续展平任意 JSON https stackoverflow com questions 42299905 using jq flatten arbitrary json to delimiter separated flat dic
  • 为什么 ?(*[[:class:]])foobar 的 Bash 模式匹配速度很慢?

    我有一个文本文件 foobar txt 大约 10KB 不是那么长 然而 以下匹配搜索命令在高性能 Linux 计算机上大约需要 10 秒 bash gt shopt s extglob bash gt cat foobar txt pri
  • 管道安装时疏水阀是否按预期工作?

    以下是问题演示的最少代码 http pastebin com 5TXDpSh5 http pastebin com 5TXDpSh5 bin bash set e set o pipefail function echoTraps echo
  • bash 递归xtrace

    有没有办法运行 bash 脚本 X 以便如果 X 调用可执行 bash 脚本 Y 则 Y 以 sh eux 开头 X sh Y sh Y sh bin sh echo OK 可以通过导出子 shell 使用父 shell 中设置的相同 sh
  • 从文件开头开始 grep (grep -f )

    I use commands grep f file从文件中提取管道内容 但是 我只想在匹配字符串位于行开头时才提取 通常我使用grep string 但它不适用于grep f grep f file grep No such file o
  • 使用 awk 将特定子字符串与正则表达式匹配

    我正在处理特定的文件名 并且需要从中提取信息 文件名的结构类似于 20100613 M4 28007834 005 F RANDOMSTR raw gz RANDOMSTR 是最多 22 个字符的字符串 并且可能包含 或不包含 格式为 W
  • shell中基于正则表达式的颜色突出显示输出

    我想知道是否可以用颜色突出显示与某些字符串匹配的 shell 命令的输出 例如 如果我运行 myCommand 输出如下 gt myCommand DEBUG foo bar INFO bla bla ERROR yak yak 我希望所有
  • 使用 BASH 和 AWK 创建 HTML 表

    我在创建 html 表来显示文本文件中的统计信息时遇到问题 我确信有 100 种方法可以做得更好 但这里是 以下脚本中的注释显示了输出 bin bash function getapistats curl s http api exampl
  • dbt 的 dbt_project.yml 文件中的嵌套变量

    下面是我在 dbt project yml 文件中的代码 vars Variable project1 vendor ABC DEF ABC model name model123 case types name CASE1 name CA
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中
  • 如何在不同的目录中执行python脚本?

    Solved对于可能觉得这有帮助的人 请参阅下面我的答案 我有两个脚本 a py 和 b py 在我当前的目录 C Users MyName Desktop MAIN 中 我运行 gt python a py 第一个脚本 a py 在我当前

随机推荐

  • CMake - 始终构建特定文件

    我有一个特定的文件 无论它是否被修改 都应该在每次编译时重建 原因是它取决于值变化的系统宏 我如何使用 CMake 强制重建 我不想将其绑定到特定目标 在 CMakeLists txt 中指定的任何目标开始实际构建过程之前 应该 触及 该文
  • EclipseLink 自定义表和列命名策略

    有没有办法让 EclipseLink 将驼峰式大小写转换为下划线 例如 class MyEntity gt select from MY ENTITY 理想情况下 我可以将预先打包的东西作为属性放入 persistence xml 中 您可
  • 将 pandas 系列和 dataframe 对象转换为 numpy 数组

    系列到 Numpy 数组 我有一个pandas系列对象如下所示 s1 pd Series 0 1 2 3 4 5 6 7 8 index AB AC AD BA BB BC CA CB CC 我想把这个系列转换成numpy数组如下 seri
  • 如何以编程方式启动特定应用程序?

    我想启动一个特定的应用程序 我知道如何执行意图 但如果有多个应用程序可以处理意图 我想避免选择菜单 我想直接进入特定的应用程序 希望这是有道理的 您应该使用包管理器的功能 Context ctx this or you can replac
  • 在 Flask 应用程序中返回 Excel 文件

    我正在创建一个 Flask 应用程序 提示用户输入 Excel 文件 对其进行一些处理 然后将文件返回给用户以便他们可以下载它 请忽略任何未使用的导入 我计划稍后使用它们 我的功能已关闭 我只是不确定如何将文件发送回用户以便他们可以下载它
  • JSP 表达式适用于 JSTL 标记,但不适用于 Struts 2 标记

    我在我的项目中使用 JSTL 和 Struts 2 我正在尝试使用 JSTL 和 Struts 2 标记在范围内设置一个值 如下所示 div div div div
  • 警告:mysql_fetch_object():提供的参数不是有效的 MySQL 结果资源

    地狱在那里 当我尝试连接以从数据库中提取内容时 出现以下错误 Warning mysql fetch object supplied argument is not a valid MySQL result resource in home
  • String 与 Stringbuffer 作为 HashMap 键

    我试图理解为什么 String 和 Stringbuilder StringBuffer 在用作 Hashmap 键时会受到不同的对待 让我用下面的插图来澄清我的困惑 示例 1 使用字符串 String s1 new String abc
  • 图库内的图像缩放/平移

    我正在尝试在 Android 图库小部件中缩放 平移图像 图像覆盖整个屏幕 虽然我可以缩放 平移图库中的图像 但我无法滑动到下一个 上一个图像 单个图像的缩放和平移效果很好 我创建了一个 TouchImageView 它扩展了 ImageV
  • 为什么 GWT 不允许我们在文档元素上添加关键事件处理程序?

    我知道有FocusPanel我可以在其上附加此类处理程序 但根据我的经验 该组件的行为不太好 所以我想尽可能避免它 所以我想知道为什么没有办法在文档上附加密钥处理程序 根据怪异模式它可以跨浏览器工作 所以这不应该是一个问题 我也尝试自己编写
  • 用于多对象分类的支持向量机

    我正在尝试使用线性支持向量机进行多类对象类别识别 到目前为止 我了解到主要使用两种方法 一对一 OVA 和一对一 OVO 但我很难理解它的实现 我的意思是我认为使用的步骤是 首先 特征描述符是通过 SIFT 准备的 所以我有一个 128XN
  • 子文档中的 SD MongoDB 多态性

    我刚刚开始使用 spring data mongodb 用 Ja va 开发一些应用程序 并遇到了一些我无法解决的问题 有几个像这样的文档 bean Document collection myBeanBar public class Ba
  • 显示站点根目录外部的图像

    类似的问题在这里被问到 从文档根目录外部提供图像 给出并接受的解决方案是使用 Apache Aliases 但是 文件夹的 Apache 别名是否也会将其公开 我想服务于一个形象并保持它在公众视野中的隐形性 除了别名之外 有谁知道在文档根目
  • Git 从浅克隆中查找自 以来修改的文件

    我在 CI 盒子上运行测试 为了加快速度 我只是做了一个浅克隆 git clone depth 1 email protected JoshCheek some repo git 假设所有测试都通过 我想触发管道中的下一步 触发的内容取决于
  • bigquery 流缓冲区会持续多长时间

    我目前正在将数据从sql server数据库系统迁移到bigquery 并且在尝试从具有活动流缓冲区的bigquery表中删除记录时遇到了问题 您能否确认流缓冲区在被删除之前会持续多长时间那么删除操作可以运行吗 我发现这给开发过程带来了不必
  • 在 C# 中解析阿拉伯日期?

    我在解析日期时遇到了问题 该程序被阿拉伯日期绊倒了 因为某些原因DateTime TryParse 为这种文化输出垃圾 这是说明我的问题的示例代码 var culture CultureInfo CreateSpecificCulture
  • Android 类似 TreeView 的功能

    我正在实施TreeView对于我的应用程序 我在网上搜索了一下 找到了一个ListView执行TreeView这太乱了 是否可以实现n级TreeView using ExpandableListView 请分享您的想法或给我参考一些例子 提
  • Robot Framework - 将 Appium 驱动程序传递给 python 脚本

    我正在使用 Python 将 Robot Framework 与 Appium 集成 但是我不知道如何将 Robot Framework 中创建的 Appium 驱动程序传递给自定义 python 脚本 我的环境 Mac 操作系统 小牛队
  • 通过 firebase 函数发送电子邮件

    有一种方法可以使用像 sendgrid mailgun 这样的API通过Firebase云功能发送电子邮件 或者它被视为出站连接 假设您这么问是因为您使用的是免费 Firebase 计划 正如上所解释的Firebase 定价页面 Spark
  • Bash:变量未正确扩展[重复]

    这个问题在这里已经有答案了 我正在尝试使用变量重命名文件 但是 当我将变量插入到文件名的开头时 事情没有按预期工作 情况如下 我有一个文件名测试 ls test 和一个变量i 1 将变量添加到文件名的末尾或中间时 它可以工作 mv test