Intereting Posts
Загрузка Debian с зашифрованными дисками: RAID не собран Установлено с помощью apt-get, затем закончилось хранение Microsoft, похоже, блокирует электронную почту из пользовательского домена для любого адреса, кроме одного Linux Mint: LAN «Кабель не подключен», несмотря на то, что он Mutt: определение макроса для определенной папки OpenWRT: как применить изменения в системном файле uci Неважно, какой компьютер (хост или клиент) я генерирую пару ключей SSH? автоматическое удаление записей меню fluxbox Проблема кэширования dav2fs при сжатии Debian Как запретить пользователям запускать команды с помощью косой черты для каталога? Силовая линия Vim со сломанной кодировкой Отобразить имя процесса с помощью ps заставить Checkpoint VPN SSL Network Extender работать в командной строке Число округлений с плавающей точкой в ​​csh Как я могу увеличить / увеличить рабочий стол Cinnamon с помощью колеса мыши?

На языке 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 

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