누구든지 시간을 내어 다음 사항을 설명할 수 있는지 궁금합니다.
배열에 넣은 파일 디렉터리(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