我有这个脚本,它将提示您输入文件的相对路径或绝对路径,然后在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] 删除。
我来说两句