File: cmdsub.fish

package info (click to toggle)
fish 4.2.1-3.1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 35,980 kB
  • sloc: python: 6,972; javascript: 1,407; sh: 1,009; xml: 411; ansic: 230; objc: 78; makefile: 20
file content (80 lines) | stat: -rw-r--r-- 1,616 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#RUN: %fish %s

echo $(echo 1\n2)
# CHECK: 1 2

# Command substitution inside double quotes strips trailing newline.
echo "a$(echo b)c"
# CHECK: abc

# Nesting
echo "$(echo "$(echo a)")"
# CHECK: a
echo "$(echo $(echo b))"
# CHECK: b

echo "$(echo multiple).$(echo command).$(echo substitutions)"
# CHECK: multiple.command.substitutions

test -n "$()" || echo "empty list is interpolated to empty string"
# CHECK: empty list is interpolated to empty string

# Variables in command substitution output are not expanded.
echo "$(echo \~ \$HOME)"
# CHECK: ~ $HOME

echo "$(printf %s 'quoted command substitution multiline output
line 2
line 3
')"
# CHECK: quoted command substitution multiline output
# CHECK: line 2
# CHECK: line 3

echo trim any newlines "$(echo \n\n\n)" after cmdsub
#CHECK: trim any newlines  after cmdsub

echo i{1, (echo 2), "$(echo 3)"}
# CHECK: i1 i2 i3

echo "$(echo index\nrange\nexpansion)[2]"
#CHECK: range

echo "$(echo '"')"
#CHECK: "

echo "$(echo $(echo 1) ())"
#CHECK: 1

echo "$(echo 1))"
# CHECK: 1)

echo "($(echo 1))"
# CHECK: (1)

echo "$(echo 1) ( $(echo 2)"
# CHECK: 1 ( 2

echo "$(echo A)B$(echo C)D"(echo E)
# CHECK: ABCDE

echo "($(echo A)B$(echo C))"
# CHECK: (ABC)

echo "quoted1""quoted2"(echo unquoted3)"$(echo quoted4)_$(echo quoted5)"
# CHECK: quoted1quoted2unquoted3quoted4_quoted5

var=a echo "$var$(echo b)"
# CHECK: ab

# Make sure we don't swallow an escaped dollar.
echo \$(echo 1)
# CHECK: $1
echo "\$(echo 1)"
# CHECK: $(echo 1)
echo "\$$(echo 1)"
# CHECK: $1

# Make sure we don't error on an escaped $@ inside a quoted cmdsub.
echo "$(echo '$@')"
# CHECK: $@