異常動作することが確認された

異常動作することが確認された
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.

おすすめ記事