sed不会在脚本中扩展我的BASH变量

71GA

我有这个脚本,它将提示您输入文件的相对路径或绝对路径,然后在Linux控制台中使用'\'交换空白''替换是使用第一个sed命令完成的。替换后,我回显该路径只是为了检查,它是正确的。

然后是第二个sed命令,该命令必须处理我为其编写绝对路径的文件。好吧,它将无法正常工作……看起来在第二个命令中,$ drill_file没有扩展。最奇怪的是,它可以在脚本之外正常扩展... WOOT !?

#!/bin/bash

echo "Give relative or absolute path to the \"drill.TXT\" file:"

read drill_file_temp
drill_file=$(echo $drill_file_temp | sed -r 's/\s/\\ /g')
echo $drill_file

sed 's/\(^X[[:digit:]]*\)[[:digit:]]\(Y[[:digit:]]*\)[[:digit:]]/\1\2/' $drill_file

echo "Conversion finished."
豪克

您将引号字符放入字符串中。问题在于参数扩展后不分析引号字符。为了获得理想的效果,您需要

eval sed ... $drill_file

您可以set -x用来查看外壳如何看到命令行:

> text=a\\\ \\\ \\\ b
> echo $text
a\ \ \ b
> set -x
> : $text
+ : 'a\' '\' '\' b

即外壳看不到一个参数,而是四个。

就像其他人说的那样:您必须引用$drill_file/ $drill_file_temp"$drill_file"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

变量不会在 makefile 中扩展为 patsubst

Bash脚本不会在输入命令中退出

Udev不会在我的脚本中执行某些行

变量不会在bash函数中的''内被替换

Bash变量不会在管道中递减

如果使用声明,bash 变量不会在数组内扩展

Safari扩展中的注入脚本不会在Youtube中触发

DelayedExpansion变量不会在FOR循环中扩展

通配符不会在带有变量的 for 循环中扩展

Bash波浪号不会在某些参数中扩展,例如--home_dir =〜

SwiftUI - 为什么我的 @Published 变量不会在我的 @ObservedObject 调用中更新?

curl可以工作,但是不会在BASH脚本中执行

MMV不会在bash脚本中执行(仅在由CRON运行时)

Bash脚本不会在tempfile中输出任何数据

if/else 块的 else 部分永远不会在 Bash 脚本中运行

Bash脚本不会在ctrl d上退出

echo和printf不会在bash中打印循环中分配的变量

Url 和 img 变量不会在我的 React 应用程序中呈现

glob 模式不会在 zsh 中的文件内部扩展

Xcode:didTransition 不会在 iMessage 扩展中运行

线性布局不会在 ScrollView 中扩展

read -t不会在bash中暂停我的while循环

Unity2D:为什么来自不同脚本的变量不会在此脚本中更新?

Shell 脚本不会在 Jenkins 中失败

python类变量不会在多处理中更新

变量不会在jQuery / JS中递增?

重新定义的变量不会在AngularJS中绑定

LLDB不会在Swift中创建便捷变量

变量不会在Powershell中存储数据