산술에서 변수 비교

산술에서 변수 비교

누구든지 시간을 내어 다음 사항을 설명할 수 있는지 궁금합니다.

배열에 넣은 파일 디렉터리(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

두 변수를 비교하도록 지정하지 않아도 되는 이유는 무엇입니까? 이와 같이,

(($name > $HighestNum)) && 최고 번호=$name

당신의 도움을 주셔서 감사합니다.

답변1

((...))그 이유는 이것이 특별한 경우이기 때문이다 . 산술 연산을 수행합니다. 안에 있는 텍스트는 쓸모가 없습니다 ((...)). 따라서 간단히 말해서 내부의 모든 이름은 ((...))쉘 변수를 참조하는 것으로 가정됩니다.

결과적으로 다음 두 가지 작업은 동일한 작업을 수행합니다.

$ a=1; b=2; ((c=$a+$b)); echo $c
3

$ a=1; b=2; ((c=a+b)); echo $c
3

관련 정보