스크립트
Posts
84 posts리눅스 bash 스크립트에서 연관 배열(associative array) 사용하기
통상적인 배열(array)에 대한 내용은 이전 게시물을 참고하자. 여기로 리눅스 bash 스크립트에서 연관 배열(associative array)을 사용하는 방법이다. 연관 배열은 인덱스를 수자로 사용하지 않고 문자열을 사용할 수 있다. 변수를 연관 배열로 사용하려면 해당 변수가 연관 배열임을 미리 선언해 주어야 한다. declare 명령으로 선언하면서 -A 옵션으로 연관 배열임을 지정해야 한다. # 변수 arr_test를 연관 배열로 선언 declare -A arr_test 이제 인덱스를 문자열로 사용할 수 있다. 아래의 예시를 보자. # 배열 값 할당 arr_test[abc]=0 arr_test[def]=1 # 배열에 저장된 내용 출력 echo ${arr_test[ab
[bash: curl] curl을 이용한 FTP 자동 접속 - 파일명 변경
우선, curl을 이용한 ftp 자동접속 방법의 기본적인 내용(파일 업로드/다운로드/삭제, 디렉토리 생성/삭제 등)은 이전 게시물을 참고하자. 여기로 업로드한 파일, 또는 이미 FTP서버에 존재하는 파일의 이름을 바꾸는 방법이다. FTP에서 이름을 변경하는 절차는 RNFR 명령으로 변경 대상 파일을 지정한 후에, RNTO 명령으로 새로운 이름을 설정하는 형태다. 여기서 파일명은 절대경로를 사용해야 함에 유의. curl의 -Q 옵션으로 이름 변경 명령어를 전달하면 된다. 아래의 예시를 보자. # /my_dir/documents/에 있는 my_file.dat를 my_file.mod.dat로 이름 변경 curl --user ftp_user -Q "RNFR /my_dir/documents/my_f
[bash: sed] 16진수값(hex) 대체하기
sed에서 문자열이 아니라 16진수값을 대체할 수도 있다. 따라서 텍스트 파일뿐만 아니라 바이너리 파일에 대해서도 대체 기능을 사용할 수 있다(sed를 이용한 문자열 대체의 기본은 이전 게시물을 참고하자. 여기로). 아래의 예시를 보자. # my_file.dat에서 모든 0xff를 0xf0으로 대체, my_file.mod.dat로 저장 sed 's/\xff/\xf0/g' my_file.dat > my_file.mod.dat 16진수를 나타내기 위해 'x'를 사용하는데, 문자 x를 의미하는 것이 아니므로 역슬래시(\)를 추가해 주어야 한다. 즉 \xff는 0xff를 의미하게 된다. 만약 연속되는 16진수값을 대체할 경우에는 각 값마다 \x를 붙인다. 아래의 예시를 보자. # my_fi
[bash: if, grep] 특정 문자열의 존재유무에 따른 작업 지정하기
어떤 파일에 특정한 문자열이 있는 경우와 없는 경우에 각기 다른 작업을 해야 할 경우, if 조건문과 grep을 적절히 조합해서 간편하게 구현할 수 있다. 우선 if 조건문의 -z 옵션을 보자. 이것은 문자열의 길이가 0이면 참, 0이 아니면 거짓이다. 아래의 예시를 보자. string="abc" # 변수 abc에 저장된 문자열의 길이가 0인 경우 메시지 출력 if [[ -z $string ]] then echo "변수 string에 저장된 문자열의 길이는 0입니다." fi 이제 원래의 문제로 돌아가서, 예를 들어 파일 my_file.txt에 문자열 "abcd"가 존재하느냐 여부에 따라서 뭔가 다른 작업을 해야 하는 경우를 생각해 보자. if 조건에 grep을 이용한 문자열 검색의



