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