1 #!/usr/bin/env bash
2 #
3 # For testing the Python sketch
4
5 #### builtin
6 echo hi
7 ## stdout: hi
8
9 #### command sub
10 echo $(expr 3)
11 ## stdout: 3
12
13 #### command sub with builtin
14 echo $(echo hi)
15 ## stdout: hi
16
17 #### pipeline
18 hostname | wc -l
19 ## stdout: 1
20
21 #### pipeline with builtin
22 echo hi | wc -l
23 ## stdout: 1
24
25 #### and-or chains
26 echo 1 && echo 2 || echo 3 && echo 4
27 echo --
28 false || echo A
29 false || false || echo B
30 false || false || echo C && echo D || echo E
31 ## STDOUT:
32 1
33 2
34 4
35 --
36 A
37 B
38 C
39 D
40 ## END
41
42 #### here doc with var
43 v=one
44 tac <<EOF
45 $v
46 "two
47 EOF
48 ## stdout-json: "\"two\none\n"
49
50 #### here doc without var
51 tac <<"EOF"
52 $v
53 "two
54 EOF
55 ## stdout-json: "\"two\n$v\n"
56
57 #### here doc with builtin
58 read var <<EOF
59 value
60 EOF
61 echo "var = $var"
62 ## stdout: var = value
63
64 #### Redirect external command
65 expr 3 > $TMP/expr3.txt
66 cat $TMP/expr3.txt
67 ## stdout: 3
68 ## stderr-json: ""
69
70 #### Redirect with builtin
71 echo hi > _tmp/hi.txt
72 cat _tmp/hi.txt
73 ## stdout: hi
74
75 #### Here doc with redirect
76 cat <<EOF >_tmp/smoke1.txt
77 one
78 two
79 EOF
80 wc -c _tmp/smoke1.txt
81 ## stdout: 8 _tmp/smoke1.txt
82
83 #### "$@" "$*"
84 fun () {
85 argv.py "$@" "$*"
86 }
87 fun "a b" "c d"
88 ## stdout: ['a b', 'c d', 'a b c d']
89
90 #### $@ $*
91 fun() {
92 argv.py $@ $*
93 }
94 fun "a b" "c d"
95 ## stdout: ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd']
96
97 #### failed command
98 ls /nonexistent
99 ## status: 2
100
101 #### subshell
102 (echo 1; echo 2)
103 ## status: 0
104 ## STDOUT:
105 1
106 2
107 ## END
108
109 #### for loop
110 for i in a b c
111 do
112 echo $i
113 done
114 ## status: 0
115 ## STDOUT:
116 a
117 b
118 c
119 ## END
120
121 #### vars
122 a=5
123 echo $a ${a} "$a ${a}"
124 ## stdout: 5 5 5 5