Как подсчитать количество уровней в пути к файлу, включая root? (Сценарии оболочки) - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать сценарий, который будет принимать входной аргумент (путь к файлу) и подсчитывать количество уровней в пути к файлу. Я попытался использовать следующий код, но он учитывает только дом и каталоги, но не root и файл, если он указан.

IFS="/" read -ra PARTS <<< "$(pwd)"                                                                                                                                                                                                          
for i in "${PARTS[@]}"                                                                                                                                                                                                                       
do                                                                                                                                                                                                                                                   
 echo "$i"                                                                                                                                                                                                                                    
 ((NUM_FLEVEL=NUM_FLEVEL+1))                                                                                                                                                                                                          
done 

Скажем, я ввожу «script ~ / hello1 / file1» и ~ оказывается home / house . Я ожидаю, что фактическое общее количество будет 5.

  1. /
  2. home
  3. house
  4. hello1
  5. file1

1 Ответ

0 голосов
/ 09 июля 2020

Вы работаете с выводом pwd, а не с именем файла, которое вы, по-видимому, пытались передать в качестве аргумента командной строки.

Вы можете распечатать длину массива просто с помощью ${#array[@]}.

IFS="/" read -ra PARTS <<< "$1"
echo "${#PARTS[@]}"                                                                                                                                                                                           

Демо (с некоторыми деталями отладки): https://ideone.com/1oWawt

Правильным решением, вероятно, будет l oop вместо "$@", чтобы вы могли передать несколько аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...