스크립트에서 이 시나리오를 사용하는 경우:
#!/bin/bash
addvline=$(if [ "$1" ]; then echo "$1"; echo; fi)
cat << EOF
this is the first line
$addvline
this is the last line
EOF
비어 있으면 $1
빈 줄이 나타납니다. 하지만 비어 있지 않은 경우
그 뒤에 빈 줄을 어떻게 추가할 수 있나요?$1
따라서 스크립트를 실행하면 다음과 같습니다.
bash script.sh hello
나는 얻을 것이다:
this is the first line
hello
this is the last line
echo
의 두 번째 것을 사용하여 이를 달성하려고 하는데 if statement
개행 문자가 전달되지 않습니다.
답변1
if
명령 대체를 사용하지 않고 변수 내용을 설정하기로 결정 해 보겠습니다 .
if [ "$1" ]; then addvline=$1$'\n'; fi
그 다음에:
#!/bin/bash
if [ "$1" ]; then addvline=$1$'\n'; fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
답변2
이에 대한 몇 가지 해결책이 있습니다. 먼저 나중에 사용할 개행 문자를 포함하는 변수(bash에서)를 만들어 보겠습니다.
nl=$'\n'
그런 다음 인쇄할 변수를 구성하는 데 사용할 수 있습니다.
#!/bin/bash
nl=$'\n'
if [ "$1" ]; then
addvline="$1$nl"
else
addvline=""
fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
if
또는 올바른 매개변수 확장을 사용하면 이를 완전히 피할 수 있습니다.
#!/bin/bash
nl=$'\n'
addvline="${1:+$1$nl}"
cat << EOF
this is the first line
$addvline
this is the last line
EOF
또는 더 간단한 코드를 사용하면 다음과 같습니다.
#!/bin/bash
nl=$'\n'
cat << EOF
this is the first line
${1:+$1$nl}
this is the last line
EOF