직장에서 bash 스크립트를 자주 작성합니다. 관리자가 다음 예제와 같이 전체 스크립트를 기능으로 나눌 것을 제안했습니다.
#!/bin/bash
# Configure variables
declare_variables() {
noun=geese
count=three
}
# Announce something
i_am_foo() {
echo "I am foo"
sleep 0.5
echo "hear me roar!"
}
# Tell a joke
walk_into_bar() {
echo "So these ${count} ${noun} walk into a bar..."
}
# Emulate a pendulum clock for a bit
do_baz() {
for i in {1..6}; do
expr $i % 2 >/dev/null && echo "tick" || echo "tock"
sleep 1
done
}
# Establish run order
main() {
declare_variables
i_am_foo
walk_into_bar
do_baz
}
main
"가독성"이외의 다른 이유가 있습니까? 몇 가지 의견과 줄 간격으로 동일하게 설정할 수 있을까요?
스크립트를보다 효율적으로 실행합니까 (실제로 반대의 경우가 예상됩니다) 또는 앞에서 언급 한 가독성을 넘어서 코드를 수정하는 것이 더 쉬워 집니까? 아니면 정말 문체 선호입니까?
스크립트가 잘 보여주지 않지만, 우리의 실제 스크립트 함수의 "실행 순서가"매우 선형 경향이 있습니다은 - walk_into_bar
물건에 따라 i_am_foo
수행하고 있으며, do_baz
가 설정 한 물건에 작용 walk_into_bar
- 그래서 인 실행 순서를 임의로 바꿀 수있는 것은 일반적으로 우리가하는 일이 아닙니다. 예를 들어, 갑자기 declare_variables
뒤에 넣기를 원하지 않을 경우 문제가 발생 walk_into_bar
합니다.
위의 스크립트를 작성하는 방법의 예는 다음과 같습니다.
#!/bin/bash
# Configure variables
noun=geese
count=three
# Announce something
echo "I am foo"
sleep 0.5
echo "hear me roar!"
# Tell a joke
echo "So these ${count} ${noun} walk into a bar..."
# Emulate a pendulum clock for a bit
for i in {1..6}; do
expr $i % 2 >/dev/null && echo "tick" || echo "tock"
sleep 1
done
local
변수 범위 를 제공합니다 .
main()
상단main "$@"
에 놓고 하단에 추가 하여 호출합니다. 이를 통해 높은 수준의 스크립트 로직을 열 때 가장 먼저 볼 수 있습니다.