从bash中的两个变量追加字符

时间:2018-08-23 06:55:16

标签: bash loops

嗨,我将输出存储在两个变量中。假设:

echo "$varA"

Cow
Dog
Horse

echo "$varB"

1
2
3

我需要像var3这样的输出

Cow:::1
Dog:::2
Horse:::3

我该如何使用循环?如果我使用两个循环,那么内部循环将对牛,狗和马(每个)运行三次。 1次执行后,我找不到退出内循环的方法,这里没有goto语句。

还有其他建议吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

为什么不将这些“输出”保留在数组中?喜欢

#include <stdio.h>

void printTagData (TAG_DATA *pTagData)
{
    FILE *f = fopen ("text1.txt", "wt");
    for (int i = 0; i < pTagData->tagIDLength; i++)
    {
         if (i > 0 && i % 2 == 0)
             fprintf (f, "-");
         fprintf (f, "%02X", pTagData->pTagID [i]);
    }

    fclose (f);
}

然后您可以像这样的单个循环准备varA=(Cow Dog Horse) varB=(1 2 3)

var3

您可以阅读bash手册中的“数组和循环”部分以获取更多信息。

答案 1 :(得分:1)

数组(请参阅@oguzismail的答案)是执行此操作的更好方法,但是如果您确实需要使用字符串变量中的行(大概以换行分隔),则可以使用lam(层压)命令:

var3=$(lam <(echo "$varA") -s ":::" <(echo "$varB"))

请注意,这使用进程替换(<( )位)将两个输入变量作为通过文件名的输入提供给lam。这是仅用于bash的功能,因此必须仅在bash shell中使用它。如果在脚本中,请使用显式的bash shebang行(#!/bin/bash#!/usr/bin/env bash)或使用bash scriptname not sh scriptname)运行它。