📄 heredoc.t
字号:
name: heredoc-1description: Check ordering/content of redundent here documents.stdin: cat << EOF1 << EOF2 hi EOF1 there EOF2expected-stdout: there---name: heredoc-2description: Check quoted here-doc is protected.stdin: a=foo cat << 'EOF' hi\ there$a stuff EO\ F EOFexpected-stdout: hi\ there$a stuff EO\ F---name: heredoc-3description: Check that newline isn't needed after heredoc-delimiter marker.stdin: ! cat << EOF hi there EOFexpected-stdout: hi there---name: heredoc-4description: Check that an error occurs if the heredoc-delimiter is missing.stdin: ! cat << EOF hi thereexpected-exit: e > 0expected-stderr-pattern: /.*/---name: heredoc-5description: Check that backslash quotes a $, ` and \ and kills a \newlinestdin: a=BAD b=ok cat << EOF h\${a}i h\\${b}i th\`echo not-run\`ere th\\`echo is-run`ere fol\\ks more\\ last \ line EOFexpected-stdout: h${a}i h\oki th`echo not-run`ere th\is-runere fol\ks more\ last line---name: heredoc-6description: Check that \newline in initial here-delim word doesn't imply a quoted here-doc.stdin: a=i cat << EO\ F h$a there EOFexpected-stdout: hi there---name: heredoc-7description: Check that double quoted $ expressions in here delimiters are not expanded and match the delimiter. POSIX says only quote removal is applied to the delimiter.stdin: a=b cat << "E$a" hi h$a hb E$a echo doneexpected-stdout: hi h$a hb done---name: heredoc-8description: Check that double quoted escaped $ expressions in here delimiters are not expanded and match the delimiter. POSIX says only quote removal is applied to the delimiter (\ counts as a quote).stdin: a=b cat << "E\$a" hi h$a h\$a hb h\b E$a echo doneexpected-stdout: hi h$a h\$a hb h\b done---name: heredoc-tmpfile-1description: Check that heredoc temp files aren't removed too soon or too late. Heredoc in simple command.stdin: TMPDIR=$PWD eval ' cat <<- EOF hi EOF for i in a b ; do cat <<- EOF more EOF done ' & sleep 1 echo Left overs: *expected-stdout: hi more more Left overs: *---name: heredoc-tmpfile-2description: Check that heredoc temp files aren't removed too soon or too late. Heredoc in function, multiple calls to function.stdin: TMPDIR=$PWD eval ' foo() { cat <<- EOF hi EOF } foo foo ' & sleep 1 echo Left overs: *expected-stdout: hi hi Left overs: *---name: heredoc-tmpfile-3description: Check that heredoc temp files aren't removed too soon or too late. Heredoc in function in loop, multiple calls to function.stdin: TMPDIR=$PWD eval ' foo() { cat <<- EOF hi EOF } for i in a b; do foo foo() { cat <<- EOF folks $i EOF } done foo ' & sleep 1 echo Left overs: *expected-stdout: hi folks b folks b Left overs: *---name: heredoc-tmpfile-4description: Check that heredoc temp files aren't removed too soon or too late. Backgrounded simple command with here docstdin: TMPDIR=$PWD eval ' cat <<- EOF & hi EOF ' & sleep 1 echo Left overs: *expected-stdout: hi Left overs: *---name: heredoc-tmpfile-5description: Check that heredoc temp files aren't removed too soon or too late. Backgrounded subshell command with here docstdin: TMPDIR=$PWD eval ' ( sleep 1 # so parent exits echo A cat <<- EOF hi EOF echo B ) & ' & sleep 2 echo Left overs: *expected-stdout: A hi B Left overs: *---name: heredoc-tmpfile-6description: Check that heredoc temp files aren't removed too soon or too late. Heredoc in pipeline.stdin: TMPDIR=$PWD eval ' cat <<- EOF | sed "s/hi/HI/" hi EOF ' & sleep 1 echo Left overs: *expected-stdout: HI Left overs: *---name: heredoc-tmpfile-7description: Check that heredoc temp files aren't removed too soon or too late. Heredoc in backgrounded pipeline.stdin: TMPDIR=$PWD eval ' cat <<- EOF | sed 's/hi/HI/' & hi EOF ' & sleep 1 echo Left overs: *expected-stdout: HI Left overs: *---name: heredoc-tmpfile-8description: Check that heredoc temp files aren't removed too soon or too late. Heredoc in function, backgrounded call to function.stdin: TMPDIR=$PWD # Background eval so main shell doesn't do parsing eval ' foo() { cat <<- EOF hi EOF } foo # sleep so eval can die (sleep 1; foo) & (sleep 1; foo) & foo ' & sleep 2 echo Left overs: *expected-stdout: hi hi hi hi Left overs: *---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -