Bash拦截脚本中的通配符

时间:2012-08-29 09:05:06

标签: linux bash

我正在使用Bash脚本逐行读取文本文件,其中包含特殊字符(正则表达式)。当我使用echo "${SOME_VAR}"时,它不会显示文本

我熟悉Prevent * to be expanded in the bash script

如何按原样显示和使用文字?

更新 文本(TSV)文件包含类似于(最后一个条目是psql查询)的元组

bathroom    bathroom    select name from photos where name ~* '\mbathroom((s)?|(''s)?)\M';

我正在按如下方式阅读CSV:

tail -n+2 text.file | while IFS=$'\t' read x y z
do
    echo "${z}"
done

给出输出

select name from photos where name ~* 'mbathroom((s)?|(''s)?)M');

请注意'\'缺少

1 个答案:

答案 0 :(得分:3)

尝试将-r标记与read

一起使用
tail -n+2 text.file | while IFS=$'\t' read -r x y z
do
    echo "${z}"
done

来自read手册页:

  

-r不要以任何特殊方式处理反斜杠字符。将每个反斜杠视为输入行的一部分。