minimimi

[Shell Script] 02. boilerplate 폴더/파일 생성하기 with. ChatGPT 본문

프로그래밍 공부/Unix

[Shell Script] 02. boilerplate 폴더/파일 생성하기 with. ChatGPT

99mini 2024. 3. 25. 08:00
반응형

Intro

지난 포스트의 개선 사항으로 echo 구문에서 변경사항이 먼저 보이고, skip한 구문은 마지막에 표시되었으면 좋겠다는 생각을 했습니다. 개선 사항도 GPT와 함께 수정해 보았습니다.

다른 스크립트의 output을 저장하기

_generate_boilerplate.sh

# Initialize arrays to store output and exit codes
outputs=()
exit_codes=()

# Call touch_file.sh script to create each file
extension_names=("tsx" "scss" "stories.tsx" "ts")
for ((i = 0; i < ${#extension_names[@]}; i++)); do
	extension="${extension_names[i]}"
	output=$(scripts/_touch_file.sh "$directory" "$filename" "$extension")
	exit_code=$?

	outputs+=("$output")
	exit_codes+=("$exit_code")
done

# Call update_index.sh script to update the $driectory/indes.ts file
output=$(scripts/_update_index.sh "$directory" "$filename")
exit_code=$?
outputs+=("$output")
exit_codes+=("$exit_code")

# Output success codes
for ((i = 0; i < ${#outputs[@]}; i++)); do
	if [ "${exit_codes[i]}" -eq 0 ]; then
		echo -e "${outputs[i]}"
	fi
done

# Output failure codes
for ((i = 0; i < ${#outputs[@]}; i++)); do
	if [ "${exit_codes[i]}" -ne 0 ]; then
		echo -e "${outputs[i]}"
	fi
done

Line by Line

# Initialize arrays to store output and exit codes
outputs=()
exit_codes=()

# Call touch_file.sh script to create each file
extension_names=("tsx" "scss" "stories.tsx" "ts")
for ((i = 0; i < ${#extension_names[@]}; i++)); do
	extension="${extension_names[i]}"
	output=$(scripts/_touch_file.sh "$directory" "$filename" "$extension")
	exit_code=$?

	outputs+=("$output")
	exit_codes+=("$exit_code")
done

output과 exit_code를 저장할 배열을 각각 초기화합니다.

for 문을 순회하며 _touch_file.sh스크립트를 실행하고 해당 출력을 캡처합니다.

$?는 가장 최근에 실행된 명령의 종료 코드를 캡처합니다.

그리고 각각을 배열에 추가해줍니다.

# Output success codes
for ((i = 0; i < ${#outputs[@]}; i++)); do
	if [ "${exit_codes[i]}" -eq 0 ]; then
		echo -e "${outputs[i]}"
	fi
done

# Output failure codes
for ((i = 0; i < ${#outputs[@]}; i++)); do
	if [ "${exit_codes[i]}" -ne 0 ]; then
		echo -e "${outputs[i]}"
	fi
done

성공 코드(exit 0) 일 경우 먼저 echo해주며 실패 코드일 경우 output을 출력합니다.

개선 후

개선 후

CheckBox를 생성한 후 CheckBox/index.ts를 임의로 삭제한 뒤 다시 한번 스크립트를 실행하였습니다.

변경 사항이 먼저 출력되고 Skip에 관한 콘솔은 다음에 모여서 출력됩니다. Skip 출력구문도 약간 수정해주었습니다.

이전 포스트

[0] Shell Script - boilerplate 폴더/파일 생성하기 with. ChatGPT

반응형