Intereting Posts
Включить режим Promiscous в CentOS 7 Каковы ваши любимые функции командной строки или трюки? Каир-Док Границы пузыря WPA_CLI, показывающий точку доступа как связанную, когда она не должна Как очистить окна установки и двойной загрузки / мультизагрузки 10 Ubuntu и Kali? Что такое расширенная версия команды «sl»? libvirt qemu не может получить доступ к изображению внутри моего домашнего каталога, даже как root? Являются ли остальные выражения эквивалентными логическим и && или || и где я должен отдать предпочтение одному другому? Понимание встроенного чтения Что означает «Debian на пути к доказательству происхождения двоичных файлов»? Crontab на Mac OSX Как просмотреть двоичный файл? Как удалить символ новой строки из строк, предшествующих определенному шаблону? xmodmap – L_Alt + ijkl в виде стрелок (макет польских программистов) Как установить htmldoc через cygwin?

На языке Bash, как я могу определить список путей файлов?

На языке Bash, как я могу определить список путей?

Мне нужно что-то вроде ниже:

list_of_paths = ["$Home/MyDir/test.c", "$Home/YourDir/file.c"]

Массив может быть создан в bash с помощью

 mypaths=( "/my/first/path" "/my/second/path" ) 

Элементы массива также могут быть назначены индивидуально:

 mypaths[0]="/my/first/path" mypaths[1]="/my/second/path" 

Обратите внимание, что не должно быть пробелов вокруг = .

Это описано в разделе «Массивы» в руководстве по bash .

Используя массив:

 printf 'The 1st path is %s\n' "${mypaths[0]}" printf 'The 2nd path is %s\n' "${mypaths[1]}" for thepath in "${mypaths[@]}"; do # use "$thepath" here done 

Альтернатива для /bin/sh (также работает в bash и ряде других sh подобных оболочек):

 set -- "/my/first/path" "/my/second/path" printf 'The 1st path is %s\n' "$1" printf 'The 2nd path is %s\n' "$2" for thepath do # use "$thepath" here done 

При этом используется единственный массив в оболочке /bin/sh , который представляет собой список позиционных параметров ( $1 , $2 , $3 и т. Д. Или вместе $@ ). Этот список обычно содержит аргументы командной строки для скрипта или функции оболочки, но может быть задан явно в скрипте с помощью set .

Цикл в конце также может быть записан

 for thepath in "$@"; do # use "$thepath" here done 

Обратите внимание, что цитирование каждой отдельной переменной является значительным.