bash 기능이 있습니다
yumtelegraf() {
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
sudo yum install telegraf
}
함수에서 들여쓰기를 사용하면 파일에 탭 공백이 인쇄됩니다...
yumtelegraf() {
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl =
https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
sudo yum install telegraf
}
이 행동을 피하는 방법은 무엇입니까?
echo 명령을 사용하여 이를 달성할 수도 있습니까?
답변1
예를 들어 탭과(대시 포함)을 사용 <<-EOF
하거나 고양이 대신 필터를 사용하세요. sed
:
$ sed -e "s/^\s*//" <<EOF
as
df
gh
jk
op # two tabs
EOF
그러면 공백과 탭이 제거됩니다. 끝 부분은 EOF
들여쓰기할 수 없습니다. 닫는 태그와 동일한 수의 공백을 사용 <<" EOF"
하고 다시 사용할 수 있지만 " EOF"
따옴표로 인해 문서가 확장되지 않으므로 이 경우에는 원하지 않습니다. 비교하다:
$ a=x
$ cat <<EOF
"$a"
EOF
"x"
$ cat <<"EOF"
"$a"
EOF
"$a"
echo
이 문제가 있는 한 . 하지만 다음 printf
을 사용할 수도 있습니다.
printf "%s\n" \
"[influxdb]" \
"name = InfluxDB Repository - RHEL \$releasever" \
"baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable" \
"enabled = 1" \
"gpgcheck = 1" \
"gpgkey = https://repos.influxdata.com/influxdb.key" \
| sudo tee /etc/yum.repos.d/influxdb.repo
귀하의 질문에 대시를 남겨두었지만 \$
확장을 벗어나기 때문에 여기서는 부정확할 수 있습니다.
답변2
원하는 기능을 구체적으로 활성화하려면 <<-
(참고 ) 을 사용해야 합니다 .-
yumtelegraf() {
cat <<-EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl =
https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
sudo yum install telegraf
}
답변3
당신은 그것을 사용할 수 있습니다 echo -e "\tblabla"
:
$ echo -e "\tblabla\n\t\tblibli\n\t\t\tbloblo\n"
blabla
blibli
bloblo
Bash 매뉴얼 페이지에 설명된 대로:
If the -e option is given, interpretation of the following backslash-escaped characters is enabled.
[...]
\a alert (bell)
\b backspace
\c suppress further output
\e
\E an escape character
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\0nnn the eight-bit character whose value is the octal value nnn (zero to three octal digits)
\xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
\uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
\UHHHHHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)