虽然Loop会在第一次失败时读取字符串退出的greps,但不会读取整个文件

马修·李·艾伦·戈贝尔

我有一个脚本,该脚本读取表文件并应该查找字符串。如果找到该字符串,则应解析在其上找到该字符串的行并执行一些操作。该脚本在第一次找不到字符串时退出。(文件的第一行。)表文件格式为:

10.1.1:0.0:lan:hq:3:254:br0:.1.16:.1.1:.1.21:.1.23:hq:eoc:hq

在while循环($ ip和$ ipad)之前,有给定变量的定义,以及日志和调试功能。我已经删除了所有使其难以阅读的项目(调试,日志记录,注释等)。while循环如下所示:

line=$(grep ${ipad} {$net})
    if [ -z ${line}]; then
    base=$(echo ${ip}|awk -F"." '{print $1"."$2}')
    mask=$(echo ${line}|awk -F":" '{print $2}')
    zone=$(echo ${line}|awk -F":" '{print $3}')
    loc=$(echo ${line}|awk -F":" '{print $4}')
    low=$(echo ${line}|awk -F":" '{print $5}')
    high=$(echo ${line}|awk -F":" '{print $6}')
    bri=$(echo ${line}|awk -F":" '{print $7}')
    bftp=$(echo ${line}|awk -F":" '{print $8}')
    ftp=${base}${bftp}
    bgate=$(echo ${line}|awk -F":" '{print $9}')
    gate=${base}${bgate}
    bns=$(echo ${line}|awk -F":" '{print $10}')
    bns1=$(echo ${line}|awk -F":" '{print $11}')
    if [[ ${loc} == "var1" && ${zone} == "var2" ]]; then 
        ns=10.10${bns}
        ns1=10.10${bns1}
    else
        ns=${base}${bns}
        ns1=${base}${bns1}
    fi
    if [[ ${loc} == "var3" && ${zone} == "var2" ]]; then
        ns=10.1${bns}
        ns1=10.1${bns1}
    else
        ns=${base}${bns}
        ns1=${base}${bns1}
    fi
    tld=$(echo ${line}|awk -F":" '{print $12}')
    tld1=$(echo ${line}|awk -F":" '{print $13}')
    com=$(echo ${line}|awk -F":" '{print $14}')
        if [ -f ${iptab} ]; then
            spc=$(cat ${iptab})
            tab=${zone}-${spc}.${loc}
        else
            tab=${zone}.${loc}
        fi
        # If no RAM size is given use 1GB
                if [ -z $ram ]; then
                        ram=1024
                fi
                # If no disk size is given use 10GB
                if [ -z $mem ]; then
                        mem=10
                fi
    #Then Do Some stuff with that info

    else
        log "IP address given does not match any of the IP Network blocks. Please check the address and try again."
        if [ -f ${korg} ]; then 
            mv ${korg} ${ksin}
        fi
        exit 0          
    fi

从日志输出中,我可以看到while循环在第一行中找不到该字符串,然后退出。如果我为其中包含第一行字符串的脚本传递参数,则while循环将执行所有操作,然后尝试第二行而不退出。完全莫名其妙。

豪克

在循环的开始,检查该行是否包含某些数据:

if echo ${line}|grep ${ipad}; then

else分支if

exit 0

这就是脚本停止的位置和原因。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何读取字符串的第一行?

如何读取字符串的第一行?

html拖放setDragImage不会在第一次拖动时设置重影

按键时不会在第一次按键时触发

第一次字符串拆分

仅在第一次出现分隔符时才拆分字符串

为什么在第一次读取文件时字符串的长度减一?

jQuery onmouseover函数不会在第一次悬停时触发

简单反应状态不会在第一次请求时改变

如何在第一次出现字符串时拆分列?

Mobx的计算值在第一次但不是在第一次加载时不会在UI上更新(观察)

想要仅在第一次使用sed替换字符串时

在第一次匹配后使用grep(或类似方法)获取字符串

Grep过滤器不会在第一次比赛时停止

第一次出现数字时,Powershell拆分字符串

从txt文件中读取字符串,然后在c ++中的第一行停止

匹配字符串后,在第一次出现字符时拆分字符串

如何在第一次出现的:和冒号之间提取字符串

仅在第一次出现指定字符时才拆分字符串

读取文件并搜索第一次出现的特定字符串,并且仅匹配某些模式

我需要读取一个文件并搜索第一次出现的特定字符串,以便可以将其复制到另一个文件中

读取文件中的第一行并将其附加到第一次出现的搜索字符串并重复直到 EOF

useState 不会在第一次渲染时初始化获取的数据

在第一次出现逗号时将字符串拆分为 2 个子字符串?

在第一次出现数字或逗号时拆分字符串

使用 PHP 读取字符串时缺少第一行

如何在 bigquery 中提取字符串的 7 到 10 位数字的第一次出现?

iOS Widget 不会在主屏幕中第一次读取 UserDeafults 值

Flutter:第一次读取文件失败,但在热重载后工作