일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- golang
- Kubernetes
- Flutter
- ffmpeg
- 행정구역분류
- Pod
- aws
- Android
- Python
- VSCode
- wireshark
- HLS
- namespace
- Sysinternals
- RTMP
- macos
- aws cli
- service
- dart
- deployment
- Shell script
- Java
- spring cloud config
- android studio
- docker
- configmap
- nginx-media-server
- Windows10
- ebpf
- kubectl
Archives
- Today
- Total
woonizzooni
쉘 스크립트 - 배열 다뤄보기 / 배열 선언 / 배열끼리 병합 등... 본문
MacOS나 Linux에서 친숙한(?) bash, zsh등에서 보통 아래와 같이 사용했는데.. (파일명 : a.sh)
#!/bin/sh
declare -i count=1
a=(abc 123 def)
b=(ghi 456 kkk)
echo ">>> print a"
for item in ${a[@]}
do
printf " %d:%s\n" $count $item
count+=1
done
count=1
c=(${a[@]} ${b[@]})
echo ">>> print all"
for item in "${c[@]}"
do
printf " %d:%s\n" $count $item
count+=1
done
실행결과
>>> print a
1:abc
2:123
3:def
>>> print all
1:abc
2:123
3:def
4:ghi
5:456
6:kkk
이걸 그대로 alpine 리눅스 등 경량화 쉘(?)에서 실행하면
./a.sh: line 3: declare: not found
./a.sh: line 5: syntax error: unexpected "("
정수형 변수야 그렇다 치고(=declare 미지원)
괄호 표현식에서 syntax error! 음...
배열 표현을 공백(space)을 사용한 문자열로 만들고,
set 과 shift를 이용해서 다음과 같이 작성해봄.
# !/bin/sh
count=1
a="abc 123 def"
b="ghi 456 kkk"
echo ">>> print a"
set -- $a
while [ -n "$1" ];
do
printf " %d:%s\n" $count $1
count=`expr $count + 1 `
shift
done
echo ">>> print all"
count=1
set -- $a $b
while [ -n "$1" ]; do
printf " %d:%s\n" $count $1
count=`expr $count + 1 `
shift
done
동일한 결과를 얻음.
>>> print a
1:abc
2:123
3:def
>>> print all
1:abc
2:123
3:def
4:ghi
5:456
6:kkk
모든 쉘, 아니 일단 안되던 alpine 리눅스 쉘과 내 맥 쉘에서 정상 동작함.
이렇게 하자.
[참고]
set
https://pubs.opengroup.org/onlinepubs/009696799/utilities/set.html
https://www.ibm.com/docs/ko/i/7.3?topic=variables-set
bash append to array
https://linuxhint.com/bash_append_array/
'Programming > Shell-script' 카테고리의 다른 글
자동 입력 쉘 스크립트 작성 (Here Document / Input Redirection 활용) (0) | 2020.11.23 |
---|---|
쉘 스크립트 파일 작성하기 - #!으로 시작 + 공백없이 + 바이너리명 (0) | 2020.11.22 |
Comments