Comment assigner un espace contagieux à une autre variable dans KSH

J’écris un script shell pour lire le fichier d’entrée et traiter le contenu du fichier ligne par ligne. Je prévoyais de stocker chaque ligne dans un tableau et de traiter le tableau ultérieurement, comme indiqué ci-dessous.

#-------------------------------- # Global Variable file_path="NULL" set -A array_statements #-------------------------------- readFileIntoArray() { while IFS= read -r line do echo "$line" array_statements[${#array_statements[*]}+1]="$line" done <"$file_path" } printTheArray() { for i in ${array_statements[@]}; do echo $i done } main() { file_path=$1 readFileIntoArray printTheArray } main "$@" 

La ligne contient des espaces entre les mots comme Hello World How Are You? . Lorsque j’exécute le script et que j’imprime le contenu des tableaux, la sortie est

 Hello World How Are You? 

Comment atsortingbuer la valeur de la variable qui contient des espaces à une autre variable ou transmettre le variable contenant des espaces à une autre fonction de KSH .

Merci

Le moyen le plus simple est probablement de supprimer votre code actuel et de le refactoriser.

 array_statements=() while read -r line; do array_statements+=("$line") done <"$1" printf "%s\n" "${array_statements[@]}" 

Avec le code simplifié autant, cela n'a probablement pas beaucoup de sens de garder quelque chose encapsulé dans une fonction distincte.

Notez en particulier que l'absence des guillemets autour de ${array_statements[@]} en une chaîne de caractères joyeuse, perdant toutes les limites des éléments du tableau.