PAGER를 사용하여 가장 널리 사용되는 쉘에 맞는 스크립트를 만들려면 어떻게 해야 합니까?

PAGER를 사용하여 가장 널리 사용되는 쉘에 맞는 스크립트를 만들려면 어떻게 해야 합니까?

기본적으로 다음과 같은 스크립트가 있습니다.

if [ -t 1 ]; then
  bold="$(tput bold)"
  unbold="$(tput sgr0)"
else
  bold=""
  unbold=""
fi
TEXT="
${bold}Hello World${unbold}
There's a bunch of text in here that I don't control, but I
can escape it, so I put slashes before double quotes (\") and
dollar signs (\$)
"
ACTUAL_PAGER="${PAGER:-"less -R"}"
echo "$TEXT" | $ACTUAL_PAGER

이것은 bash에서는 잘 작동하지만 zsh 에서는 zsh: command not found: less -Rzsh 가 ACTUAL_PAGER.PAGERmore

bash, zsh 등에서 잘 작동하도록 하는 방법이 있나요?

답변1

명시적으로 작성하세요.

if [ -z "$PAGER" ]; then 
  ACTUAL_PAGER="less -R"
else
  ACTUAL_PAGER="$PAGER"  
fi

그런데 왜 여러 언어에 대한 스크립트를 작성하려고 할까요? 이식 가능한 스크립트를 원하면 일반 POSIX 쉘에 작성하고, 그렇지 않은 경우 스크립트가 올바른 인터프리터로 실행되도록 원하는 shebang을 지정하십시오. Python과 Perl에서 실행되는 단일 스크립트를 작성하려고 하지 않는데 왜 bash 및 zsh에서 실행되는 단일 스크립트를 작성하려고 합니까?

관련 정보