gpt4 book ai didi

linux - 我怎样才能从 shell 脚本获得各种输出?

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:29 25 4
gpt4 key购买 nike

我不确定如何表达它(我有过忘记一切的时刻之一),但我想创建一个脚本,它为我提供每个可能由字符组成的单词。

例如,如果我想要各种“空格”,我可以输入 (s|S)/(p|P)/(A|a|4)/(C|c)/(e |3|E|ε)/(s|S|5|$) 到脚本中,作为返回得到如下输出:

...
sP4C3s
SpaCe5
spACεS
Sp4C3$
...

等等,等等。我该如何创建它?

(顺便搜索了一下,但找不到任何有用的东西。可能是我措辞错误。)

最佳答案

您将使用 brace expansion在 bash 中:

echo {s,S}{p,P}{a,A}{c,C}{e,E}{s,S}

spaces spaceS spacEs spacES spaCes spaCeS spaCEs spaCES spAces spAceS spAcEs spAcES spACes spACeS spACEs spACES sPaces sPaceS sPacEs sPacES sPaCes sPaCeS sPaCEs sPaCES sPAces sPAceS sPAcEs sPAcES sPACes sPACeS sPACEs sPACES Spaces SpaceS SpacEs SpacES SpaCes SpaCeS SpaCEs SpaCES SpAces SpAceS SpAcEs SpAcES SpACes SpACeS SpACEs SpACES SPaces SPaceS SPacEs SPacES SPaCes SPaCeS SPaCEs SPaCES SPAces SPAceS SPAcEs SPAcES SPACes SPACeS SPACEs SPACES

如果你想用换行符分隔的话,使用

printf "%s\n" {s,S}{p,P}{a,A}{c,C}{e,E}{s,S}

要使其可重用,请将其放入一个函数中。但是,由于大括号扩展是 shell 执行的第一个扩展,因此如果不使用 eval 就不能在其中使用变量:

casecombinations() {
local source brace_expr i char
for source in "$@"; do
brace_expr=""
for ((i=0; i<"${#source}"; i++)); do
char="${source:i:1}"
case $char in
[[:alpha:]]) brace_expr+="{${char,},${char^}}";;
*) brace_expr+="\\$char";;
esac
done
eval echo "$brace_expr"
done
}
casecombinations hello world

关于linux - 我怎样才能从 shell 脚本获得各种输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45565313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com