비정상적으로 작동하는 것으로 확인됨

비정상적으로 작동하는 것으로 확인됨
if [[ "$1" == "" ]]
 then

leftarray=($(find . -type l -printf "%p\n" 2>/dev/null))
rightarray=($(find . -type l -printf "%l\n" 2>/dev/null))

for var in "${rightarray[@]}"
do
   maximumarray[$index]=`echo "$var" | tr -dc "/" | wc -c | tr -d " "`
   index=$(($index+1))
done
#############
for numbers in "${maximumarray[@]}"
do
   if [[ $numbers > $MAX  ]]
   then
   MAX=$numbers
   fi
done
#############
for var in "${rightarray[@]}"
do

   component=`echo "$var" |  tr -dc "/" | wc -c | tr -d " "`
        if [[ $component -eq $MAX  ]]
        then
        echo "Output: '${leftarray[$temp]} -> ${rightarray[$temp]}'"
        fi
   emp=$(($temp + 1))
done

이는 인수나 스위치 없이 스크립트를 실행할 때 현재 있는 디렉터리의 모든 디렉터리와 하위 디렉터리를 검색해야 하는 문제입니다. 작동하지 않고 이유도 모르겠고 미치게 만듭니다.

"/"스크립트는 입력 수가 가장 많은 심볼릭 링크를 찾아서 -printf "%l\n"출력해야 합니다. 동일한 수의 "/"가 있는 링크가 더 있을 때 작동합니다.

이 스크립트에는 스위치도 있고 -d <number>위와 동일한 코드가 있지만 find에서 -maxlength도 사용했는데 잘 작동하므로 왜 이것이 작동하지 않는지 모르겠습니다.

도움이 필요하세요?

답변1

OP에서 제공한 추가 정보를 바탕으로 해결 방법은 다음과 같습니다.

조건부 줄이 if [[ $numbers > $MAX ]]원하는 결과를 얻지 못했습니다. 스크립트를 변경하면 예상대로 >작동 -gt합니다.

조건식 아래의 bash 맨페이지에서:

string1 > string2
          True if string1 sorts after string2 lexicographically in the current locale.

arg1 OP arg2
       OP is one of -eq, -ne, -lt, -le, -gt, or -ge.  These arithmetic binary operators return true if arg1  is  equal  to,  not
          equal  to, less than, less than or equal to, greater than, or greater than or equal to arg2, respectively.  Arg1 and arg2
          may be positive or negative integers.

관련 정보