테스트 목적으로 명령 헤더를 사용하여 필터링을 활성화하거나 활성화하지 않으려고 합니다.
예를 들어 다음 명령은 여러 줄을 출력할 수 있습니다.
#!/bin/bash
produce_a_lot_of_lines
head
필요에 따라 변수를 기반으로 필터를 설정하고 싶습니다 . 다음 예제가 작동합니다.
#!/bin/bash
function filter() {
[[ "$HEAD" =~ [0-9]+ ]] && head -n $HEAD || cat
}
produce_a_lot_of_lines | filter
이를 달성하는 더 깨끗하고 효율적이며 더 나은 방법이 있습니까?
답변1
조금 더 재사용 가능한 방법:
function filter() {
local nb_lines="$1"; shift
if [[ "$nb_lines" =~ ^[0-9]+$ ]]; then
"$@" | head -n "$nb_lines"
else
"$@"
fi
}
filter "$HEAD" produce_a_lot_of_lines