Voglio dividere 'hello'
in h e l l o
un array usando solo bash, potrei farlo in sed con sed 's/./& /g'
ma voglio sapere come dividere una stringa in un array in Bash quando non so quale sarebbe il delimitatore, o il delimitatore è qualsiasi personaggio unico. Non credo di poter usare ${i// /}
senza un po 'di creatività perché il delimitatore è sconosciuto e non credo che l'espressione accetti regex. Ho provato a utilizzare BASH_REMATCH con [[string = ~ ([az].). *]] Ma non funziona come mi aspettavo. Qual è il modo corretto di usare solo bash per realizzare un string.split()
tipo di comportamento? Il motivo è che sto cercando di scrivere l'utilità rev in tutta bash:
while read data; do
word=($(echo $data|tr ' ' '_'|sed 's/./& /g'))
new=()
i=$((${#word[@]} - 1))
while [[ $i -ge 0 ]]; do
new+=(${word[$i]})
(( i-- ))
done
echo ${new[@]}|tr -d ' '|tr '_' ' '
done
Ma ho usato tr e sed, voglio sapere come eseguire correttamente la divisione e poi lo aggiusterò per essere tutto bash. Solo per divertimento.
[[ $string =~ ${string//?/(.)} ]]
verrà impostato BASH_REMATCH[]
come richiesto, vedere la mia risposta alla domanda a cui Peter Mortensen si collega per una spiegazione.