2019-06-26 21:06:07 +02:00
#RUN: %fish %s
# "Basic && and || support"
2018-03-01 18:30:48 -08:00
echo first && echo second
echo third || echo fourth
2020-01-13 20:34:22 +01:00
true && false
echo " true && false: $status "
true || false
echo " true || false: $status "
true && false || true
echo " true && false || true: $status "
2019-06-26 21:06:07 +02:00
# CHECK: first
# CHECK: second
# CHECK: third
# CHECK: true && false: 1
# CHECK: true || false: 0
# CHECK: true && false || true: 0
2018-03-02 10:23:57 -08:00
2019-06-26 21:06:07 +02:00
# "&& and || in if statements"
2018-03-02 10:23:57 -08:00
2020-01-13 20:34:22 +01:00
if true || false
echo "if test 1 ok"
end
if true && false
else
echo "if test 2 ok"
end
if true && false ; or true
echo "if test 3 ok"
end
if [ 0 = 1 ] || [ 5 - ge 3 ]
echo "if test 4 ok"
end
2019-06-26 21:06:07 +02:00
# CHECK: if test 1 ok
# CHECK: if test 2 ok
# CHECK: if test 3 ok
# CHECK: if test 4 ok
2018-03-02 10:23:57 -08:00
2019-06-26 21:06:07 +02:00
# "&& and || in while statements"
2018-03-02 10:23:57 -08:00
set alpha 0
set beta 0
set gamma 0
set delta 0
while [ $alpha - lt 2 ] && [ $beta - lt 3 ]
2020-01-13 20:34:22 +01:00
or [ $gamma - lt 4 ] || [ $delta - lt 5 ]
2018-03-02 10:23:57 -08:00
echo $alpha $beta $gamma
set alpha ( math $alpha + 1 )
set beta ( math $beta + 1 )
set gamma ( math $gamma + 1 )
set delta ( math $delta + 1 )
end
2019-06-26 21:06:07 +02:00
# CHECK: 0 0 0
# CHECK: 1 1 1
# CHECK: 2 2 2
# CHECK: 3 3 3
# CHECK: 4 4 4
2018-03-02 10:23:57 -08:00
2019-06-26 21:06:07 +02:00
# "Nots"
2018-03-04 16:06:32 -08:00
2020-01-13 20:34:22 +01:00
true && ! false
echo $status
not true && ! false
echo $status
not not not true
echo $status
not ! ! not true
echo $status
not ! echo not !
echo $status
2019-06-26 21:06:07 +02:00
# CHECK: 0
# CHECK: 1
# CHECK: 1
# CHECK: 0
# CHECK: not !
# CHECK: 0
2018-03-04 16:06:32 -08:00
2019-06-26 21:06:07 +02:00
# "Complex scenarios"
2018-03-02 10:23:57 -08:00
2020-01-13 20:34:22 +01:00
begin
echo 1
false
end || begin
echo 2 && echo 3
end
2018-03-02 18:09:16 -08:00
if false && true
2020-01-13 20:34:22 +01:00
or not false
echo 4
2018-03-02 18:09:16 -08:00
end
2019-06-26 21:06:07 +02:00
# CHECK: 1
# CHECK: 2
# CHECK: 3
# CHECK: 4
2019-09-08 10:42:24 -07:00
2020-08-04 21:39:37 +02:00
# Newlines
true &&
echo newline after conjunction
# CHECK: newline after conjunction
false ||
echo newline after disjunction
# CHECK: newline after disjunction
true &&
echo empty lines after conjunction
# CHECK: empty lines after conjunction
true &&
# can have comments here!
echo comment after conjunction
# CHECK: comment after conjunction
2019-09-08 10:42:24 -07:00
# --help works
builtin and --help > /dev/null
2021-11-03 22:52:17 -07:00
# CHECKERR: fish: and: missing man page
# CHECKERR: Documentation may not be installed.
# CHECKERR: `help and` will show an online version
2019-09-08 10:42:24 -07:00
echo $status
and --help > /dev/null
2021-11-03 22:52:17 -07:00
# CHECKERR: fish: and: missing man page
# CHECKERR: Documentation may not be installed.
# CHECKERR: `help and` will show an online version
2019-09-08 10:42:24 -07:00
echo $status
# CHECK: 0
# CHECK: 0
builtin or --help > /dev/null
2021-11-03 22:52:17 -07:00
# CHECKERR: fish: or: missing man page
# CHECKERR: Documentation may not be installed.
# CHECKERR: `help or` will show an online version
2019-09-08 10:42:24 -07:00
echo $status
or --help > /dev/null
2021-11-03 22:52:17 -07:00
# CHECKERR: fish: or: missing man page
# CHECKERR: Documentation may not be installed.
# CHECKERR: `help or` will show an online version
2019-09-08 10:42:24 -07:00
echo $status
# CHECK: 0
# CHECK: 0
builtin not --help > /dev/null
2021-11-03 22:52:17 -07:00
# CHECKERR: fish: not: missing man page
# CHECKERR: Documentation may not be installed.
# CHECKERR: `help not` will show an online version
2019-09-08 10:42:24 -07:00
echo $status
not --help > /dev/null
2021-11-03 22:52:17 -07:00
# CHECKERR: fish: not: missing man page
# CHECKERR: Documentation may not be installed.
# CHECKERR: `help not` will show an online version
2019-09-08 10:42:24 -07:00
echo $status
# CHECK: 0
# CHECK: 0