94 lines
1.5 KiB
Fish
94 lines
1.5 KiB
Fish
#!/usr/bin/env fish
|
|
# Fish highlighting torture test
|
|
|
|
# === Variables ===
|
|
set normal_var hello
|
|
set -l local_var 123
|
|
set -gx GLOBAL_VAR world
|
|
set PATH $PATH /usr/local/bin
|
|
set --erase OLD_VAR
|
|
|
|
# Builtin variables
|
|
echo $HOME $PWD $USER $FISH_VERSION
|
|
|
|
# === Strings ===
|
|
set single 'single quoted string'
|
|
set double "double quoted $normal_var"
|
|
set escaped "newline\n tab\t dollar\$"
|
|
|
|
# === Conditionals ===
|
|
if test $normal_var = hello
|
|
echo equal
|
|
else if test $normal_var != world
|
|
echo "not equal"
|
|
end
|
|
|
|
# === Logical operators ===
|
|
true and echo yes
|
|
false or echo fallback
|
|
not false
|
|
|
|
# === Arithmetic ===
|
|
set x 10
|
|
set y 20
|
|
math "$x + $y"
|
|
if test (math "$x * 2") -gt 15
|
|
echo "math works"
|
|
end
|
|
|
|
# === Loops ===
|
|
for i in 1 2 3
|
|
echo "loop $i"
|
|
end
|
|
|
|
while test $x -gt 0
|
|
set x (math "$x - 1")
|
|
end
|
|
|
|
# === Functions ===
|
|
function greet --argument name
|
|
echo "Hello $name"
|
|
end
|
|
|
|
greet world
|
|
|
|
# === Command substitution ===
|
|
set files (ls | grep ".fish")
|
|
|
|
# === Redirections ===
|
|
echo output >/tmp/fish_test.txt
|
|
cat </tmp/fish_test.txt >>/tmp/fish_log.txt
|
|
|
|
# === Process substitution ===
|
|
diff (ls /bin) (ls /usr/bin)
|
|
|
|
# === Case statement ===
|
|
switch $argv[1]
|
|
case start
|
|
echo Starting
|
|
case stop
|
|
echo Stopping
|
|
case '*'
|
|
echo Unknown
|
|
end
|
|
|
|
# === Subshell ===
|
|
begin
|
|
echo "inside begin/end"
|
|
end
|
|
|
|
# === Comments & operators ===
|
|
# && || | & ! should all highlight
|
|
true && echo ok || echo fail
|
|
|
|
# === Regex ===
|
|
string match -r '^[a-z]+$' hello
|
|
|
|
# === Test builtin ===
|
|
test -f /etc/passwd
|
|
test ! -d /does/not/exist
|
|
|
|
# === Exit ===
|
|
exit 0
|
|
|