mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-25 01:52:39 +08:00
a012aedb31
When `read` is given a single character of input (including the newline), it was bailing as if it had been given no input. This is incorrect.
121 lines
2.3 KiB
Fish
121 lines
2.3 KiB
Fish
# vim: set filetype=fish:
|
|
#
|
|
# Test read builtin and IFS
|
|
#
|
|
|
|
count (echo one\ntwo)
|
|
set -l IFS \t
|
|
count (echo one\ntwo)
|
|
set -l IFS
|
|
count (echo one\ntwo)
|
|
echo [(echo -n one\ntwo)]
|
|
count (echo one\ntwo\n)
|
|
echo [(echo -n one\ntwo\n)]
|
|
count (echo one\ntwo\n\n)
|
|
echo [(echo -n one\ntwo\n\n)]
|
|
set -le IFS
|
|
|
|
function print_vars --no-scope-shadowing
|
|
set -l space
|
|
set -l IFS \n # ensure our command substitution works right
|
|
for var in $argv
|
|
echo -n $space (count $$var) \'$$var\'
|
|
set space ''
|
|
end
|
|
echo
|
|
end
|
|
|
|
echo
|
|
echo 'hello there' | read -l one two
|
|
print_vars one two
|
|
echo 'hello there' | read -l one
|
|
print_vars one
|
|
echo '' | read -l one
|
|
print_vars one
|
|
echo '' | read -l one two
|
|
print_vars one two
|
|
echo 'test' | read -l one two three
|
|
print_vars one two three
|
|
echo 'foo bar baz' | read -l one two three
|
|
print_vars one two three
|
|
echo -n 'a' | read -l one
|
|
echo "$status $one"
|
|
|
|
echo
|
|
set -l IFS
|
|
echo 'hello' | read -l one
|
|
print_vars one
|
|
echo 'hello' | read -l one two
|
|
print_vars one two
|
|
echo 'hello' | read -l one two three
|
|
print_vars one two three
|
|
echo '' | read -l one
|
|
print_vars one
|
|
echo 't' | read -l one two
|
|
print_vars one two
|
|
echo 't' | read -l one two three
|
|
print_vars one two three
|
|
echo ' t' | read -l one two
|
|
print_vars one two
|
|
set -le IFS
|
|
|
|
echo
|
|
echo 'hello there' | read -la ary
|
|
print_vars ary
|
|
echo 'hello' | read -la ary
|
|
print_vars ary
|
|
echo 'this is a bunch of words' | read -la ary
|
|
print_vars ary
|
|
echo ' one two three' | read -la ary
|
|
print_vars ary
|
|
echo '' | read -la ary
|
|
print_vars ary
|
|
|
|
echo
|
|
set -l IFS
|
|
echo 'hello' | read -la ary
|
|
print_vars ary
|
|
echo 'h' | read -la ary
|
|
print_vars ary
|
|
echo '' | read -la ary
|
|
print_vars ary
|
|
set -le IFS
|
|
|
|
# read -n tests
|
|
|
|
echo
|
|
echo '# read -n tests'
|
|
echo 'testing' | read -n 3 foo
|
|
echo $foo
|
|
echo 'test' | read -n 10 foo
|
|
echo $foo
|
|
echo 'test' | read -n 0 foo
|
|
echo $foo
|
|
echo 'testing' | begin; read -n 3 foo; read -n 3 bar; end
|
|
echo $foo
|
|
echo $bar
|
|
echo 'test' | read -n 1 foo
|
|
echo $foo
|
|
|
|
# read -0 tests
|
|
|
|
echo
|
|
echo '# read -z tests'
|
|
echo -n 'testing' | read -lz foo
|
|
echo $foo
|
|
echo -n 'test ing' | read -lz foo
|
|
echo $foo
|
|
echo 'newline' | read -lz foo
|
|
echo $foo
|
|
echo -n 'test ing' | read -lz foo bar
|
|
print_vars foo bar
|
|
echo -ne 'test\0ing' | read -lz foo bar
|
|
print_vars foo bar
|
|
echo -ne 'foo\nbar' | read -lz foo bar
|
|
print_vars foo bar
|
|
echo -ne 'foo\nbar\0baz\nquux' | while read -lza foo
|
|
print_vars foo
|
|
end
|
|
|
|
true
|