bash - 为 3 个不同的变量创建一个循环以输出所有可能的组合
问题描述
所以可以说我有 3 行代码
ABC
123
!@#
我如何创建一个 for 循环来输出将它们拼凑在一起的方法的数量?
例如ABC123!@#, ABC!@#123, 123ABC!@#$
这是我当前的代码行
#!/bin/bash
alphabet='ABC' numbers='123' special='!@#'
for name in $alphabet$numbers$special
do
echo $name
done
echo done
解决方案
您也可以使用大括号扩展完全不使用循环(但您失去了排除的能力,例如ABCABCABC
)。例如:
#!/bin/bash
alpha='ABC'
num='123'
spec='!@#'
printf "%s\n" {$alpha,$num,$spec}{$alpha,$num,$spec}{$alpha,$num,$spec}
示例使用/输出
$ bash permute_brace_exp.sh
ABCABCABC
ABCABC123
ABCABC!@#
ABC123ABC
ABC123123
ABC123!@#
ABC!@#ABC
ABC!@#123
ABC!@#!@#
123ABCABC
123ABC123
123ABC!@#
123123ABC
123123123
123123!@#
123!@#ABC
123!@#123
123!@#!@#
!@#ABCABC
!@#ABC123
!@#ABC!@#
!@#123ABC
!@#123123
!@#123!@#
!@#!@#ABC
!@#!@#123
!@#!@#!@#
推荐阅读
- java - Using Bubble Sort with Comparable ArrayLists to sort area of Rectangles
- nlp - Seq2Seq 中的最大序列长度 - 只需要注意
- c# - 带参数的 IQueryable 中的表达式(作为 IEnumerable 中的方法)
- r - How to calculate p value and correlation coefficient for Spearman’s correlation of differential expression data with 40000 permutations?
- java - How to input 4 Numbers in just one line with different Int in java?
- java - Java错误非法启动表达式导致.withPermission
- protocol-buffers - 在 grpc 中接受域对象作为请求有效负载是一种反模式吗?
- python - 将 MatLab 中的 max 函数转换为 numpy
- c# - 试图用两个数组组来洗牌
- layout - 如何在swiftUI控件中隐藏边框?