사용자 도구

사이트 도구


linux:shell_script

Linux/Unix shell script

pipe 출력 결과를 그대로 실행하기

ls | sed ... | source /dev/stdin

Script 안에서 특정 내용의 파일 생성하기

cat <<EOF >/home/a.config
first line
second line
third line
EOF

다른 명령 Stream 으로부터 지속적으로 결과 읽어서 처리하기

find . -type f |
while read -r line
do
    echo "$line"
done
 
# one liner
find . -type f | while read -r line; do echo "$line"; done
 
 
# 혹은
 
while read -r line
do
    echo "$line"
done < <(find . -type f)

실패시 fallback 처리

  • 명령 || 다른 명령 을 하면 첫번째 명령이 성공하면 그대로 넘어가고 실패했을 경우에는 다른 명령을 실행하고 그 결과를 최종 반환한다.
# curl 명령 실패시에 "{}" 를 변수에 값으로 저장
TEST_RESULT=$(curl -Ss https://.... || echo "{}")

명령의 존재 검사

  • command : POSIX 호환. 정확히는 명령에 대해 설명을 출력하는 것임. alias, function 등도 체크함.
command -v <원하는명령>
 
if ! command -v <the_command> &> /dev/null
then
    echo "<the_command> could not be found"
    exit
fi
  • hash <명령> : 일반적인 명령 검사. alias, function 도 존재여부 exit code로 확인가능. 명령이 존재하면 exit code 0이고 아니면 오류 메시지. 따라서 error stream 처리(2>/dev/null)이 필요하다.
  • type <명령> : shell 내장 명령 혹은 keyword 검사. 설명 메시지 혹은 존재하지 않는 명령이면 오류메시지. &>/dev/null stream 처리 필요.
if hash gdate 2>/dev/null; then
    gdate "$@"
else
    date "$@"
fi

참조

linux/shell_script.txt · 마지막으로 수정됨: 2022/07/08 09:35 저자 kwon37xi