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

Я мог бы не говорить это правильно, 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.

  • извлечение параметра из нескольких выходных параметров в bash?
  • readarray - разделительная строка с использованием разделителя IFS возвращает пустой массив
  • Использование оператора bash «&» с разделителем «;»?
  • Как сгенерировать текстовые файлы, начиная с родительского текстового файла
  • есть ли способ избежать процесса в bash, не покидая его?
  • Баш-скрипт, вычисляющий среднее значение зарплат
  • Будет ли кто-нибудь служить примером синхронной или несинхронной работы Bash?
  • как использовать bash для запуска одной и той же команды с группой переменных?
  • ссылаться на переменную в другом Linux
  • Как разбить подкаталоги каталога на n частей?
  • Как сравнить две строки в двух отдельных файлах?
  • Linux и Unix - лучшая ОС в мире.