首页 > 解决方案 > 在bash中附加两个变量的字符

问题描述

嗨,我将输出存储在两个变量中。比方说:

echo "$varA"

Cow
Dog
Horse

echo "$varB"

1
2
3

我需要像 var3 这样的输出

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

我怎样才能用循环做到这一点?如果我使用两个循环,那么内部循环将为牛、狗和马(每个)运行三次。在执行 1 次后我找不到退出内部循环的方法,并且这里没有 goto 语句。

还有其他建议吗?

谢谢。

标签: bashloops

解决方案


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

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

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


推荐阅读