Почему (“) дает список, а $ () дает только один аргумент

Я мог бы не говорить это правильно, PLS редактировать. Скажем, у меня есть:

lst=(`ls $1`) echo $lst #this gives the first element of the list 

но потом, когда я попробовал это:

 lst=$(ls $1) echo $lst #this gives me all the files under argument directory 

3 Solutions collect form web for “Почему (“) дает список, а $ () дает только один аргумент”

В bash.

Первый пример lst=( ls $ 1 ) создает массив значений в var lst.
Поскольку этот код покажет:

 lst=(`ls .`); printf '%s\n' "${lst[@]}" 

Второй пример lst=$(ls $1) выполняет ls $1 но для вывода var lst присваивается только вывод (объединенный как одна длинная строка).

Возможно, то, что вы хотели сравнить, было:

 lst=( `ls $1`) lst=($(ls $1)) 

И действительно, `...` точно эквивалентно $(...) .

И обе команды создадут массив значений в lst

Во-первых, почему здесь $1 (первый аргумент)? Во-вторых, echo lst будет просто писать lst , а не содержимое переменной. Предположительно, вы хотите echo $lst .

Когда вы используете bash(1) , назначение с круглой скобкой создает массив и без индекса, который оценивает его первый элемент:

 lst=(1 2 3) echo $lst # prints 1 echo ${lst[0]} # prints 1 echo ${lst[1]} # prints 2 echo ${lst[*]} # prints 1 2 3 

Первый пример

 lst=(`ls $1`) 

будет таким же, как

 lst=( $(ls $1 ) ) 

и оба, похоже, работают с bash.

  • напишите строку до ее выполнения, не записывая ее дважды
  • Как выполнить повторение цикла while для возврата суммы?
  • Неожиданный конец файла при поиске скрипта ``
  • Прочитать ~ / .bash_profile, но не / etc / profile
  • grep из текстового файла с разделителями и включить его в другую команду
  • Перезапустите процесс, когда я получу stderr из другого процесса
  • Почему в ssh удален вызов?
  • Изменение IFS не вступает в силу
  • Временное присвоение перед тем, как команда не работает?
  • добавление пути к файлу в файлы
  • Bash - функции в переменных оболочки
  • Interesting Posts

    Почему не «cvs –help | меньше работы?

    Мышь Manjaro Linux не работает

    Сокращенный текущий каталог в командной строке оболочки?

    Выход скрипта из другого скрипта через SSH

    Короткое воспроизведение звука отключено, требуется прогрев или вторичный звук в фоновом режиме

    Как скопировать с помощью SCP между двумя серверами с помощью ключа auth?

    Systemd: останавливать основной процесс (или службу) при сбое подпроцесса

    Невозможно изменить шлюз по умолчанию со статическим IP-адресом

    hosts.allow: Не требуется при использовании iptables?

    как я могу синхронизировать конкретное устройство?

    В чем разница между созданием массива mdadm с использованием разделов или всего диска напрямую

    Как сделать работу Compose в приложениях GTK и Qt?

    [[и эквивалентность случая в bash

    Визуализатор файла журнала в терминале (UNIX) (повтор записи в журнале)

    Заполнение табуляции внутри циклов, не работающих

    Linux и Unix - лучшая ОС в мире.