你會在bash使用brace expansion:
echo {s,S}{p,P}{a,A}{c,C}{e,E}{s,S}
空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間SPAC ES空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間空間艙間
如果你想要的話換行分隔,使用
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 "[email protected]"; 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
排列組合...... –