发现工作不正常

发现工作不正常
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 中我也使用 -maxdepth 并且它工作正常,所以我不知道为什么这不起作用。

有什么帮助吗?

答案1

根据OP提供的附加信息,解决方案是这样的。

条件行if [[ $numbers > $MAX ]]没有产生所需的结果。通过更改 脚本>可以-gt按预期工作。

从 bash 联机帮助页的 CONDITIONAL EXPRESSIONS 下:

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.

相关内容