/ / Как да разширим ls -1 в променлива в Mac OSX терминала - macos, bash, unix, ls, variable-expansion

Как да разширите ls -1 в променлива в Mac OSX терминала - macos, bash, unix, ls, variable-expansion

Използвайки баш черупката в терминала Mac OS X, искам да сложа в променлива всички имена на файлове в текущата директория, с едно име на ред (основно продукцията на ls -1). Ако обаче:

var=$(ls -1)
echo $var

Променливата "var" съдържа съдържа всичкиимена на файлове, но на един ред, разделени с интервали. Как мога да поправя това и да получа това, което искам. По-общо, каква е причината за това поведение? Какво се случва по време на разширяването на ls -1?

Разбирам, че мога да сложа това, което искам във файл, като направя следното, но предпочитам да постигна същия резултат с променлива.

ls -1 > var

Благодаря предварително.

Отговори:

3 за отговор № 1

Вашата заповед var=$(ls -1) работи добре. Опитвам echo "$var" (с двойни кавички).

в echo $var, bash чете $var и предаване на всяка дума като аргумент echo, Той третира пространствата и линиите по същия начин. Използването на двойни кавички причинява баш за лечение $var като един аргумент, вместо да го преформатира.

Както споменахме, разширяването на $var това, което се случва тук, се нарича разделяне на думите. Търсене за "Word Splitting" в man bash за повече информация. Най- IFS променлива (също в man bash) контролира кои знаци bash използва за изпълнение на разделянето на думите.