이것을 좀 더 간결하게 표현하려면 어떻게 해야 할까요?
if [[ $arg =~ ^[[:digit:]]+$ ]]; then
vb=$arg
else
vb=1
fi
答え1
명령문에 숫자만 포함되어 있으면 변수에 할당되고, $arg
그렇지 않으면 에 할당됩니다.vb
$arg
1
vb
따라서 독자가 확장 정규식을 해석하는 방법을 알고 있다고 가정하면 상당히 간결하고 무슨 일이 일어나고 있는지 명확합니다.
그것을 공식화하는 또 다른 방법은 다음을 사용하는 것입니다.
vb=1
[[ $arg =~ ^[[:digit:]]+$ ]] && vb=$arg
의견에서 제안한 것처럼 가독성이 떨어집니다.
코드를 작성하는 또 다른 방법은 테스트를 함수에 위임하는 것입니다.
is_whole_number () {
[[ $1 =~ ^[[:digit:]]+$ ]]
}
if is_whole_number "$arg"; then
vb=$arg
else
vb=1
fi
더 많은 코드이지만 현실적으로 if
는 정규식이나 쉘 스크립트에 익숙하지 않은 사람들도 명령문이 더 짧고 이해하기 쉽습니다.