誰もが時間をかけて次のことを説明できるかどうか疑問に思います。
配列に配置されたファイルディレクトリ(PDF)があります。
shopt -s nullglob # Set array to 0 is nothing found=
declare -a TotalFiles=($Prefix*.pdf) # Current listing of files
TotalFileCount=${#TotalFiles[@]}
私のテストでは、配列には次のものが含まれています。
Array Contents Scan-0030.pdf Scan-0140.pdf Scan-0005.pdf Scan-0006.pdf Scan-0007.pdf Scan-0008.pdf Scan-0009.pdf Scan-0010.pdf
生成される次のファイルを派生させるために、次の関数を作成しました。
function NextNum {
HighestNum =0
echo "NextNumber Functions"
#for index in "${TotalFiles[*]}"
for file in ${!TotalFiles[*]}
do
#printf "%4d: %s\n" $index $TotalFiles ${array[$index]}
echo $file ${TotalFiles[$file]}
name=${TotalFiles[$file]}
name=${name//[^0-9]/}
name=$((10#$name))
echo "File number in name - $name"
echo $file
TotalFiles[$file]=$name
**((name > HighestNum)) && HighestNum=$name**
done
}
私の問題は、Googleで見つけた関数のこの減少です。
((name > HighestNum)) && HighestNum=$name
2つの変数を比較するように指定する必要がないのはなぜですか?このように、
(($name> $HighestNum))&&トップ番号= $name
ご協力ありがとうございます。
答え1
((...))
その理由は、これが特別な場合だからです。算術演算を実行します。中のテキストは役に立ちません((...))
。したがって、簡単に言えば、内部のすべての名前は((...))
シェル変数を参照すると仮定されます。
その結果、次の2つのタスクは同じことを行います。
$ a=1; b=2; ((c=$a+$b)); echo $c
3
$ a=1; b=2; ((c=a+b)); echo $c
3