gpt4 book ai didi

regex - 带有正则表达式的 Bash 脚本在 Ubuntu 上不起作用

转载 作者:行者123 更新时间:2023-12-04 18:56:26 25 4
gpt4 key购买 nike

我有一个在我的 OpenSuSE 机器上运行的 Bash 脚本,但是当复制到我的 Ubuntu 机器时,它不起作用。脚本从文件中读取。该文件具有由空格(制表符和空格)分隔的字段。

#!/bin/bash
function test1()
{
while read LINE
do
if [[ $LINE =~ "^$" || $LINE =~ "^#.*" ]] ; then
continue;
fi
set -- $LINE
local field1=$1
local field2=$2
done < test.file
}

test1

与 test.file 包含:
# Field1Header    Field2Header
abcdef A-2
ghijkl B-3

似乎有两个问题:

(1) $field2,带连字符的那个,是空白的

(2) 去除以# 开头的空行和行的正则表达式不起作用

有谁知道怎么了?正如我所说,它在 OpenSuSE 上运行良好。

谢谢,
保罗

最佳答案

显然,从 bash 3.2 开始,不应引用正则表达式。所以这应该工作:

#!/bin/bash
while read LINE
do
if [[ $LINE =~ ^$ || $LINE =~ ^#.* ]] ; then
continue;
fi
set -- $LINE
local field1=$1
local field2=$2
done < test.file

编辑:您可能应该使用 Jo So 的答案,因为它绝对更干净。但我正在解释为什么正则表达式失败以及 OpenSuse 和 Ubuntu 之间不同行为背后的原因(很可能是不同版本的 bash)

关于regex - 带有正则表达式的 Bash 脚本在 Ubuntu 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11313635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com