Я бы использовал:
param=$(<myFile.txt)
Параметр имеет пробел (фактически новые строки) между именами. Когда используется без кавычек, оболочка расширит их до пробелов, как в:
cat $param
При использовании с кавычками имена файлов останутся в отдельных строках, например:
echo "$param"
Обратите внимание, что в особых случаях оболочки Korn используется нотация '$(<file)
', и она не разветвляется и не выполняет никаких команд.
Также обратите внимание, что вашу оригинальную идею можно заставить работать проще:
param=
for variable in `cat myFile.txt`
do
param="${param} ${variable}"
done
Это вводит пробел в начале параметра; это редко имеет значение. Интересно, что вы можете избежать пробела в передней части, имея один в конце, используя param="${param}${variable} "
. Это также работает, не портя вещи, хотя это выглядит, как будто это смешивает вещи. Кроме того, запись '${var}
' не является обязательной, хотя она также не наносит вреда.
И, наконец, пока лучше заменить команду back-tick на $(cat myFile.txt)
. Разница становится решающей, когда вам нужно вложить команды:
perllib=$(dirname $(dirname $(which perl)))/lib
против
perllib=`dirname \`dirname \\\`which perl\\\`\``/lib
Я знаю, что предпочитаю набирать (и читать)!