簡體   English   中英

Bash - 循環文件

[英]Bash - Looping Through the File

我正在嘗試通過所有文件腳本運行一個簡單的循環,但它給了我一個意想不到的結果。

我正在使用用戶配置文件來循環內容(example.conf)。

datasetA1 datasetB1 datasetC1
datasetA2 datasetB2 datasetC2
datasetA3 datasetB3 datasetC3
datasetA4 datasetB4 datasetC4

腳本:

#!/bin/bash
    ramal=`cat /data/user/example.conf | awk '{ print $1 }'`
    name=`cat /data/user/example.conf | awk '{ print $2 }'`
    macid=`cat /data/user/example.conf | awk '{ print $3 }'`
    
    for ramais in ${ramal}; do
            for names in ${name}; do
                    for idmacs in ${macid}; do
                    echo "
                    [account]
                    path = /config/voip/sipAccount0.cfg
                    Enable = 1
                    Label = ${names}
                    DisplayName = ${names}
                    AuthName = ${ramais}
                    UserName = ${ramais}
                    password = ${ramais}
                    " > 001565${idmacs}.cfg
                    echo " "
                    echo "****   ${ramais} Nome ${names} Mac ${îdmacs} success provisioned ***** "
                    done
            done
    done

結果:

001565datasetC1.cfg

        [account]
        path = /config/voip/sipAccount0.cfg
        Enable = 1
        Label = datasetB1
        DisplayName = datasetB1
        AuthName = datasetA1
        UserName = datasetA1
        password = datasetA1

001565數據集B1.cfg

        [account]
        path = /config/voip/sipAccount0.cfg
        Enable = 1
        Label = datasetB1
        DisplayName = datasetB1
        AuthName = datasetA1
        UserName = datasetA1
        password = datasetA1

預期的

001565datasetC1.cfg

        [account]
        path = /config/voip/sipAccount0.cfg
        Enable = 1
        Label = datasetB1
        DisplayName = datasetB1
        AuthName = datasetA1
        UserName = datasetA1
        password = datasetA1

001565數據集C2.cfg

        [account]
        path = /config/voip/sipAccount0.cfg
        Enable = 1
        Label = datasetB2
        DisplayName = datasetB2
        AuthName = datasetA2
        UserName = datasetA2
        password = datasetA2

嵌套循環為您提供笛卡爾積。 您只需要一個循環來一次讀取一行中的所有字段:

while read -r ramais names idmacs
    # insert you echo commands here
    echo "example: $ramais, $names, $idmacs"
done < /data/user/example.conf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM