셸에서 for-loop에 선행 0을 추가하는 방법은 무엇입니까?
반복할 때마다 변수 숫자를 1씩 증가시키는 루프의 기본 숫자를 가지고 있습니다.
for (( num=1; num<=5; num++ ))
do
echo $num
done
출력 대상:
1
2
3
4
5
나는 그것이 결과물을 생산하도록 하려고 노력하고 있습니다($num 앞에 선행 0 추가).
01
02
03
04
05
수행하지 않음:
echo 0$num
다음 구문을 사용합니다.
$ for i in {01..05}; do echo "$i"; done
01
02
03
04
05
고지 사항: 선행 0은 다음에서만 작동합니다.>=bash-4
.
사용할 경우printf
다음과 같이 결과를 변수에 추가하여 사용할 수 있습니다.
$ foo=$(printf "%02d" 5)
$ echo "${foo}"
05
seq -w
최대 입력 너비를 감지하고 출력 너비를 정규화합니다.
for num in $(seq -w 01 05); do
...
done
작성 당시에는 OSX의 최신 버전에서 이 기능이 작동하지 않았으므로 Macports를 설치하고 해당 버전의seq
또는 형식을 명시적으로 설정할 수 있습니다.
seq -f '%02g' 1 3
01
02
03
그러나 그러한 간단한 문제에 대한 형식 사양의 추악함을 고려할 때, 저는 Henk와 Adrian이 제시한 해결책을 선호합니다. 단지 Bash를 사용하는 것입니다.일반적인 "유닉스" 버전의 Bash가 없기 때문에 Apple은 이것을 망칠 수 없습니다.
echo {01..05}
또는:
for number in {01..05}; do ...; done
사용하다printf
가지라는 명령0
패딩:
printf "%02d\n" $num
for 루프는 다음과 같습니다.
for (( num=1; num<=5; num++ )); do printf "%02d\n" $num; done
01
02
03
04
05
저는 화면에 출력하는 것에 관심이 없습니다(그게 바로 printf가 주로 사용되는 것이죠?)$num 변수는 다른 프로그램의 매개 변수로 사용될 예정입니다. 하지만 이것으로 무엇을 할 수 있는지 보겠습니다.
여전히 사용할 수 있습니다.printf
:
for num in {1..5}
do
value=$(printf "%02d" $num)
... Use $value for your purposes
done
bash 4.0부터는 고정 길이 문자열과 함께 Brace Expansion을 사용할 수 있습니다.원래 발표 내용은 아래를 참조하십시오.
필요한 작업만 수행하고 셸 외부에 필요한 작업은 수행하지 않습니다.
$ echo {01..05}
01 02 03 04 05
for num in {01..05}
do
echo $num
done
01
02
03
04
05
다음은 bash-3.2 릴리스 이후 bash-4.0에 추가된 새로운 기능에 대한 간결한 설명입니다.
. . .
이제 브레이스 확장을 사용하면 확장된 숫자 값을 제로 패딩할 수 있으며 모든 값에 동일한 자릿수가 포함되도록 적절한 수의 0이 추가됩니다.
그거 좋지printf '%02d' $num
참조help printf
이 내부 bash 명령의 경우.
참고 사항:저는 다양한 버전의 bash에서 다양한 행동을 경험했습니다.
- 버전 3.1.17(1)-release-(x86_64-use-linux) 및
- 버전 4.1.17(9)-릴리스(x86_64-unknown-cygwin)
전의경우자3(3.1)에 for nn in (00..99) ; do ...
효과는 있지만,for nn in (000..999) ; do ...
둘 다 버전 4.1에서 작동하지 않습니다. printf 동작을 테스트하지 않았습니다.bash --version
정보 ).
건배, 얀
언급URL : https://stackoverflow.com/questions/18460123/how-to-add-leading-zeros-for-for-loop-in-shell
'programing' 카테고리의 다른 글
IN 값 목록을 기준으로 주문 (0) | 2023.05.28 |
---|---|
날짜가 발생한 횟수를 세어 그래프를 만듭니다. (0) | 2023.05.28 |
python xlwt 셀의 사용자 지정 배경 색상 설정 (0) | 2023.05.28 |
ASP.NET의 서버 측에서 Recetcha 2(CAPTCHA reCAPTCHA 없음)를 확인하는 중 (0) | 2023.05.28 |
100을 곱하지 않고 WPF 문자열 형식을 백분율로 설정하는 방법은 무엇입니까? (0) | 2023.05.28 |