J'utilise:
param=$(<myFile.txt)
Le paramètre possède un espace blanc (en fait de nouvelles lignes) entre les noms. Lorsqu'ils sont utilisés sans les guillemets, la coquille étendra ceux des espaces, comme dans:
cat $param
Si elle est utilisée avec des guillemets, les noms de fichiers restent sur des lignes distinctes, comme dans:
echo "$param"
Notez que la Korn shell spécial-cas la notation '$(<file)
' et ne pas fork et exécuter une commande.
Notez également que votre idée originale peut être fait pour travailler plus simplement:
param=
for variable in `cat myFile.txt`
do
param="${param} ${variable}"
done
Cela introduit un blanc à l'avant du paramètre; cela compte rarement. Fait intéressant, vous pouvez éviter le blanc à l'avant en ayant un à la fin, en utilisant param="${param}${variable} "
. Cela fonctionne également sans gâcher les choses, bien qu'il semble que cela brouille les choses ensemble. De plus, la notation '${var}
' n'est pas nécessaire, même si elle ne fait pas de mal non plus.
Enfin, pour l'instant, il est préférable de remplacer la commande back-tick par '$(cat myFile.txt)
'. La différence devient cruciale lorsque vous devez les commandes de nid:
perllib=$(dirname $(dirname $(which perl)))/lib
vs
perllib=`dirname \`dirname \\\`which perl\\\`\``/lib
Je sais que je préfère taper (et lire)!
Il semble bien votre morceau de code, mais le même résultat. Je n'ai que la dernière ligne et la moitié de celle d'avant. Qu'est-ce qui ne va pas avec mon fichier txt? –
@CC: fins de ligne CRLF? Comme dans, le fichier vient de DOS, donc ce que vous voyez dans la variable est '' name1 \ rlongername \ rn3' 'avec la sortie montrant simplement' n3nom '. '\ r' représente un retour chariot. –
Je l'ai eu. En fait, mon fichier txt n'était pas au format UNIX. Je viens d'ouvrir le fichier et choisi le format UNIX de mon éditeur. Je suppose qu'il devait y avoir des caractères spéciaux non visibles. Merci beaucoup à tous. –