Here文档

here文档(Here document),又称作heredoc、hereis、here-字串或here-脚本,是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。

它可以保存文字里面的换行或是缩排等空白字元。

一些语言允许在字串里执行变量替换和命令替换。

here文档最通用的语法是<<跟一个标识符,从下一行开始是想要引用的文字,然后再在单独的一行用相同的标识符关闭。

在Unix shell里,here文档通常用于给命令提供输入内容。


举例说明:

tr a-z A-Z <<HEREDOC
hello
world
HEREDOC

# 输出为:
HELLO
WORLD

支持变量替换和命令替换:

h=hello
tr a-z A-Z <<EOF
$h world
EOF
# HELLO WORLD

tr a-z A-Z <<EOF
`echo a` world
EOF
# A WORLD

关闭变量替换和命令替换:

h=hello
tr a-z A-Z <<'EOF'
$h world
EOF
# $H WORLD

tr a-z A-Z <<"EOF"
`echo a` world
EOF
# `ECHO A` WORLD

<<-开头会忽略每行开头的制表符:
在一些shell里输入制表符可能要先按ctrl+v,再按制表符。

tr a-z A-Z <<EOF
	world
EOF
#	WORLD

tr a-z A-Z <<-EOF
	world
EOF
# WORLD

tr a-z A-Z <<-EOF
	world
	EOF
# WORLD

tr a-z A-Z <<EOF
	world
	EOF
# 会先输出以下内容,然后报错,因为here-document没有结束
	WORLD
	EOF

注意:

  • <<和标识符后面可以有空格或制表符,不影响
  • 关闭变量替换和命令替换时,结尾的标识符不能加双引号或单引号,否则会被当做普通字符串。

Here String 是 Here Document 的一个变种,它的用法如下:

command <<< string

如:

cat <<<abc # abc
cat <<< hello  # hello
cat <<< 'hello world' # hello world

bc <<< 12.4*2 # 24.8
bc <<< '12.4 ^ 2' # 153.7
bc <<< 'scale=2; 12.4 ^ 2' # 153.76

Here文档wiki百科

你可能感兴趣的:(Shell)