기본적으로 다음과 같은 스크립트가 있습니다.
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 -R
zsh 가 ACTUAL_PAGER
.PAGER
more
bash, zsh 등에서 잘 작동하도록 하는 방법이 있나요?
답변1
명시적으로 작성하세요.
if [ -z "$PAGER" ]; then
ACTUAL_PAGER="less -R"
else
ACTUAL_PAGER="$PAGER"
fi
그런데 왜 여러 언어에 대한 스크립트를 작성하려고 할까요? 이식 가능한 스크립트를 원하면 일반 POSIX 쉘에 작성하고, 그렇지 않은 경우 스크립트가 올바른 인터프리터로 실행되도록 원하는 shebang을 지정하십시오. Python과 Perl에서 실행되는 단일 스크립트를 작성하려고 하지 않는데 왜 bash 및 zsh에서 실행되는 단일 스크립트를 작성하려고 합니까?