chore: add tests
This commit is contained in:
parent
cdd03f28ac
commit
32b19a12fd
29 changed files with 794 additions and 4 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -1,10 +1,8 @@
|
||||||
/obj
|
/obj
|
||||||
/test
|
|
||||||
/run-tests.sh
|
|
||||||
/Zmakefile
|
/Zmakefile
|
||||||
/TODO
|
TODO
|
||||||
/lxsh
|
/lxsh
|
||||||
/gmon.out
|
gmon.out
|
||||||
/profiling/*
|
/profiling/*
|
||||||
/profiling.*
|
/profiling.*
|
||||||
/include/g_*
|
/include/g_*
|
||||||
|
|
|
||||||
233
run-tests.sh
Executable file
233
run-tests.sh
Executable file
|
|
@ -0,0 +1,233 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
bin=${1-./lxsh}
|
||||||
|
|
||||||
|
echo_red()
|
||||||
|
{
|
||||||
|
printf "\033[1;31m%s\033[0m\n" "$*"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
err=0
|
||||||
|
|
||||||
|
# $1 = file , $2 = extra print
|
||||||
|
# _LXSH_OPT : lxsh options
|
||||||
|
compile_test()
|
||||||
|
{
|
||||||
|
printf "%s%s: " "$1" "$2"
|
||||||
|
if errout=$($bin $_LXSH_OPT "$1" 2>&1 >/dev/null)
|
||||||
|
then
|
||||||
|
echo "Ok"
|
||||||
|
else
|
||||||
|
echo_red "Error"
|
||||||
|
echo "$errout"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1 = runner , $2 = file , $3 = extra print , $4 = runtime for lxsh
|
||||||
|
# _LXSH_OPT : lxsh options
|
||||||
|
exec_test()
|
||||||
|
{
|
||||||
|
run=$1
|
||||||
|
lxshrun=${4-$run}
|
||||||
|
ret1=$($run "$2")
|
||||||
|
stat1=$?
|
||||||
|
ret2=$($bin $_LXSH_OPT "$2" | $lxshrun)
|
||||||
|
stat2=$?
|
||||||
|
printf "%s%s: " "$2" "$3"
|
||||||
|
if [ "$ret1" = "$ret2" ] && [ $stat1 -eq $stat2 ]
|
||||||
|
then echo "Ok"
|
||||||
|
else
|
||||||
|
echo_red "Error"
|
||||||
|
echo ">> original stat $stat1
|
||||||
|
$ret1
|
||||||
|
>> compiled stat $stat2
|
||||||
|
$ret2"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
size_test()
|
||||||
|
{
|
||||||
|
shebang=$(head -n1 "$1" | grep '^#!')
|
||||||
|
c1=$($bin --no-shebang -m "$1" | wc -c)
|
||||||
|
c2=$($bin -m "$1" | shfmt -mn | wc -c)
|
||||||
|
printf "%s%s: " "$1" "$2"
|
||||||
|
if [ $c1 -lt $c2 ]
|
||||||
|
then echo "Ok"
|
||||||
|
else
|
||||||
|
echo_red "Too big"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1 = file , $2 = extra print , $3 = list , $@ = run options
|
||||||
|
list_test()
|
||||||
|
{
|
||||||
|
printf "%s%s: " "$1" "$2"
|
||||||
|
file=$1
|
||||||
|
varlist=$3
|
||||||
|
shift 3
|
||||||
|
diffout=$(diff <($bin "$file" "$@" | sort -k2) <(echo "$varlist" | sed '/^$/d' | sort -k2) )
|
||||||
|
if [ -z "$diffout" ] ; then
|
||||||
|
echo "Ok"
|
||||||
|
else
|
||||||
|
echo_red "Variable mismatch"
|
||||||
|
echo "$diffout"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve="test/include.sh test/resolve.sh"
|
||||||
|
exec_exclude="test/prompt.sh $resolve"
|
||||||
|
|
||||||
|
|
||||||
|
echo "
|
||||||
|
============
|
||||||
|
| sh |
|
||||||
|
============
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "== Parse =="
|
||||||
|
for I in test/*.sh
|
||||||
|
do
|
||||||
|
compile_test "$I" || err=$((err+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "== Exec =="
|
||||||
|
for I in $( echo test/*.sh $exec_exclude | tr -s ' \n' '\n' | sort | uniq -u )
|
||||||
|
do
|
||||||
|
exec_test sh "$I" || err=$((err+1))
|
||||||
|
_LXSH_OPT=-M exec_test sh "$I" " (minify)" || err=$((err+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "== Size =="
|
||||||
|
for I in test/*.sh
|
||||||
|
do
|
||||||
|
size_test "$I" || err=$((err+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "== Resolve =="
|
||||||
|
|
||||||
|
for I in $resolve
|
||||||
|
do
|
||||||
|
printf "%s: " "$I"
|
||||||
|
if errmsg=$($bin "$I" | sh 2>&1 >/dev/null) && [ -z "$errmsg" ]
|
||||||
|
then echo "Ok"
|
||||||
|
else
|
||||||
|
echo_red "Error"
|
||||||
|
echo ">> stderr
|
||||||
|
$errmsg"
|
||||||
|
err=$((err+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
varlist="
|
||||||
|
2 nul
|
||||||
|
2 ABCD
|
||||||
|
1 AYE
|
||||||
|
1 BAR
|
||||||
|
3 FOO
|
||||||
|
2 TATA
|
||||||
|
1 TITI
|
||||||
|
4 TOTO
|
||||||
|
1 TUTU
|
||||||
|
4 somevar
|
||||||
|
"
|
||||||
|
|
||||||
|
vardefs="
|
||||||
|
1 ABCD
|
||||||
|
1 BAR
|
||||||
|
2 FOO
|
||||||
|
1 TATA
|
||||||
|
1 TOTO
|
||||||
|
1 TUTU
|
||||||
|
1 nul
|
||||||
|
2 somevar
|
||||||
|
"
|
||||||
|
|
||||||
|
varcalls="
|
||||||
|
1 AYE
|
||||||
|
1 ABCD
|
||||||
|
1 FOO
|
||||||
|
1 TATA
|
||||||
|
1 TITI
|
||||||
|
3 TOTO
|
||||||
|
1 nul
|
||||||
|
2 somevar
|
||||||
|
"
|
||||||
|
|
||||||
|
varlist_used="
|
||||||
|
1 AYE
|
||||||
|
2 ABCD
|
||||||
|
3 FOO
|
||||||
|
2 TATA
|
||||||
|
1 TITI
|
||||||
|
4 TOTO
|
||||||
|
2 nul
|
||||||
|
4 somevar
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "== Variables =="
|
||||||
|
{
|
||||||
|
list_test test/var.sh " (list)" "$varlist" --list-var || err=$((err+1))
|
||||||
|
list_test test/var.sh " (list-def)" "$vardefs" --list-var-def || err=$((err+1))
|
||||||
|
list_test test/var.sh " (list-call)" "$varcalls" --list-var-call || err=$((err+1))
|
||||||
|
list_test test/var.sh " (remove unused)" "$varlist_used" --remove-unused --list-var || err=$((err+1))
|
||||||
|
}
|
||||||
|
|
||||||
|
fctlist="
|
||||||
|
1 toto
|
||||||
|
1 tata
|
||||||
|
"
|
||||||
|
|
||||||
|
fctlist_used="
|
||||||
|
1 toto
|
||||||
|
"
|
||||||
|
|
||||||
|
cmdlist="
|
||||||
|
2 echo
|
||||||
|
1 toto
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "== Functions =="
|
||||||
|
{
|
||||||
|
list_test test/fct.sh " (list-fct)" "$fctlist" --list-fct || err=$((err+1))
|
||||||
|
list_test test/fct.sh " (list-cmd)" "$cmdlist" --list-cmd || err=$((err+1))
|
||||||
|
list_test test/fct.sh " (remove unused)" "$fctlist_used" --remove-unused --list-fct || err=$((err+1))
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "
|
||||||
|
============
|
||||||
|
| bash |
|
||||||
|
============
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "== Parse =="
|
||||||
|
for I in test/*.bash
|
||||||
|
do
|
||||||
|
compile_test "$I" || err=$((err+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "== Exec =="
|
||||||
|
for I in test/*.bash
|
||||||
|
do
|
||||||
|
exec_test bash "$I" || err=$((err+1))
|
||||||
|
_LXSH_OPT=-m exec_test bash "$I" " (minify)" || err=$((err+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "== Size =="
|
||||||
|
for I in test/*.bash
|
||||||
|
do
|
||||||
|
size_test "$I" || err=$((err+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "== Debashify =="
|
||||||
|
for I in test/{debashify.bash,array.bash,echo.bash}
|
||||||
|
do
|
||||||
|
_LXSH_OPT=--debashify exec_test bash "$I" "" sh || err=$((err+1))
|
||||||
|
_LXSH_OPT="-m --debashify" exec_test bash "$I" " (minify)" sh || err=$((err+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $err
|
||||||
43
test/a.bash
Normal file
43
test/a.bash
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
diff <(echo a) <(echo b)
|
||||||
|
|
||||||
|
write_to_file() { echo "$2" > "$1"; }
|
||||||
|
write_to_file >(grep bar) bar
|
||||||
|
wait $!
|
||||||
|
|
||||||
|
echo a &> /tmp/foo
|
||||||
|
echo b >& /tmp/bar
|
||||||
|
echo c &>> /tmp/foo
|
||||||
|
|
||||||
|
cat /tmp/bar /tmp/foo
|
||||||
|
rm /tmp/bar /tmp/foo
|
||||||
|
|
||||||
|
|
||||||
|
TOTO="foo
|
||||||
|
bar"
|
||||||
|
grep ar <<< ar$TOTO
|
||||||
|
|
||||||
|
declare -a A
|
||||||
|
A=("fo o" bar)
|
||||||
|
echo ${A[1]}
|
||||||
|
|
||||||
|
declare -A B
|
||||||
|
B[foo]=ta
|
||||||
|
B[bar]=tu
|
||||||
|
echo ${B[foo]}
|
||||||
|
echo ${B[bar]}
|
||||||
|
echo ${B[*]}
|
||||||
|
|
||||||
|
C=([foo]=bar [bar]=foo)
|
||||||
|
echo ${C[foo]}
|
||||||
|
echo ${C[bar]}
|
||||||
|
echo ${C[*]}
|
||||||
|
|
||||||
|
BAR=FOO
|
||||||
|
echo ${!BAR}
|
||||||
|
|
||||||
|
[[ $DEBUG == true ]] && echo debug
|
||||||
|
|
||||||
|
a=a
|
||||||
|
[[ $a = a && foo = fo* && bar =~ b.r || 2 < 3 ]]
|
||||||
4
test/arithmetic.sh
Normal file
4
test/arithmetic.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo $(( (2+1)*3 ))
|
||||||
|
echo $(( $((2+1))*3 ))
|
||||||
38
test/array.bash
Normal file
38
test/array.bash
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
TOTO=(toto tata)
|
||||||
|
TOTO[0]=titi
|
||||||
|
TOTO[1]+=tu
|
||||||
|
echo ${TOTO[0]}
|
||||||
|
echo ${TOTO[1]}
|
||||||
|
echo ${TOTO[*]}
|
||||||
|
|
||||||
|
TOTO+=(2)
|
||||||
|
echo $((TOTO[2]+1))
|
||||||
|
echo $((${TOTO[2]}+2))
|
||||||
|
|
||||||
|
declare -a TUTU
|
||||||
|
TUTU=(titi "tu tu")
|
||||||
|
echo ${TUTU[0]}
|
||||||
|
echo ${TUTU[1]}
|
||||||
|
echo ${TUTU[*]}
|
||||||
|
echo "${TUTU[*]}"
|
||||||
|
|
||||||
|
declare -A A
|
||||||
|
A[to]=ta
|
||||||
|
A[ti]=tu
|
||||||
|
echo ${A[to]}
|
||||||
|
echo ${A[ti]}
|
||||||
|
echo ${A[*]}
|
||||||
|
|
||||||
|
declare -A B
|
||||||
|
B=([to]=ta [ti]=tu)
|
||||||
|
echo ${B[to]}
|
||||||
|
echo ${B[ti]}
|
||||||
|
echo ${B[*]}
|
||||||
|
echo "${B[*]}"
|
||||||
|
|
||||||
|
toto=tata
|
||||||
|
C=()
|
||||||
|
C+=($toto)
|
||||||
|
echo ${C[@]}
|
||||||
7
test/backtick.sh
Normal file
7
test/backtick.sh
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo $(echo toto)
|
||||||
|
echo $(printf %s\\n tata)
|
||||||
|
echo `echo titi`
|
||||||
|
echo `printf '%s\\n' tutu`
|
||||||
|
|
||||||
5
test/brace.sh
Normal file
5
test/brace.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
{ echo tata ; echo a; } | sed 's|a|toto|g'
|
||||||
|
|
||||||
|
echo a | { grep a && echo b; }
|
||||||
8
test/braceexp.bash
Normal file
8
test/braceexp.bash
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
echo tot{a,o,i}
|
||||||
|
echo {1..10}
|
||||||
|
echo {0..10..2}
|
||||||
|
echo {1..10..2}
|
||||||
|
echo tot{a,o,i}{1..3}tata
|
||||||
|
echo :{{a..z},{A..Z}}
|
||||||
17
test/case.sh
Normal file
17
test/case.sh
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
echo "$*" | case $1 in
|
||||||
|
to*) echo toto ;;
|
||||||
|
tata) echo wew tata ;;
|
||||||
|
a | b)
|
||||||
|
echo titi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
cat ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case foo in bar)echo a;;foo)echo b;esac
|
||||||
|
case foo in bar)echo a;;foo)echo b
|
||||||
|
esac
|
||||||
|
|
||||||
|
case far in foo) echo a;;bar)
|
||||||
|
esac
|
||||||
5
test/comment.sh
Normal file
5
test/comment.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo toto#
|
||||||
|
echo toto#tata
|
||||||
|
echo toto #tata
|
||||||
22
test/complex.sh
Normal file
22
test/complex.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
while [ -z "$I" ]
|
||||||
|
do
|
||||||
|
case $U in
|
||||||
|
*)echo toto;I=y
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo "$I"
|
||||||
|
|
||||||
|
case toto in
|
||||||
|
tutu) ;;
|
||||||
|
|
||||||
|
toto)
|
||||||
|
cat << EOF
|
||||||
|
toto
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
tata)
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo to 2>&1
|
||||||
|
echo to2 >&1
|
||||||
|
echo to$(echo 2) >&1
|
||||||
43
test/debashify.bash
Normal file
43
test/debashify.bash
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
readonly tutu titi=tata
|
||||||
|
echo "$tutu $titi"
|
||||||
|
|
||||||
|
diff <(echo a) <(echo b)
|
||||||
|
|
||||||
|
write_to_file() { echo "$2" > "$1"; }
|
||||||
|
write_to_file >(grep tutu) tutu
|
||||||
|
wait $!
|
||||||
|
|
||||||
|
echo a &> /tmp/toto
|
||||||
|
echo b >& /tmp/tata
|
||||||
|
echo c &>> /tmp/toto
|
||||||
|
|
||||||
|
cat /tmp/tata /tmp/toto
|
||||||
|
rm /tmp/tata /tmp/toto
|
||||||
|
|
||||||
|
|
||||||
|
TOTO="ta
|
||||||
|
to"
|
||||||
|
grep ta <<< toto$TOTO
|
||||||
|
|
||||||
|
TATA=ti
|
||||||
|
TATA+=tu
|
||||||
|
echo $TATA
|
||||||
|
|
||||||
|
[[ $DEBUG == true ]] && echo debug
|
||||||
|
|
||||||
|
[ $((RANDOM+RANDOM)) -gt 0 ]
|
||||||
|
echo randomstat: $?
|
||||||
|
|
||||||
|
a=a
|
||||||
|
[[ $a = a && foo = fo* && bar =~ b.r || 2 < 3 ]]
|
||||||
|
echo $?
|
||||||
|
|
||||||
|
N=1
|
||||||
|
TOTO=tatitu
|
||||||
|
echo "${TOTO:2}"
|
||||||
|
echo "${TOTO:$N:2}"
|
||||||
|
|
||||||
|
echo ${TOTO:-tutu}
|
||||||
|
echo ${TITI:-bar}
|
||||||
76
test/dequote.sh
Normal file
76
test/dequote.sh
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
toto=tutu
|
||||||
|
tata=titi
|
||||||
|
|
||||||
|
echo "toto tata titi"
|
||||||
|
echo "toto"
|
||||||
|
|
||||||
|
echo "tata"titi
|
||||||
|
|
||||||
|
echo "ta ta"
|
||||||
|
|
||||||
|
echo "$toto"tata
|
||||||
|
|
||||||
|
echo "$toto"
|
||||||
|
|
||||||
|
echo $toto"tata"
|
||||||
|
|
||||||
|
echo $"toto"
|
||||||
|
|
||||||
|
toto="$toto"
|
||||||
|
|
||||||
|
toto="$toto"tata
|
||||||
|
echo "$toto"
|
||||||
|
toto="tata"$tata
|
||||||
|
echo "$toto"
|
||||||
|
toto=$toto"tata"
|
||||||
|
echo "$toto"
|
||||||
|
toto="$toto".tata
|
||||||
|
echo "$toto"
|
||||||
|
|
||||||
|
tata="ta ta"
|
||||||
|
echo "$tata"
|
||||||
|
|
||||||
|
echo "$"
|
||||||
|
echo \$
|
||||||
|
|
||||||
|
toto=tutu
|
||||||
|
tata=titi
|
||||||
|
|
||||||
|
echo 'toto tata titi'
|
||||||
|
echo 'toto'
|
||||||
|
|
||||||
|
echo 'tata'titi
|
||||||
|
|
||||||
|
echo 'ta ta'
|
||||||
|
|
||||||
|
echo '$toto'tata
|
||||||
|
|
||||||
|
echo '$toto'
|
||||||
|
|
||||||
|
echo $toto'tata'
|
||||||
|
|
||||||
|
echo $'toto'
|
||||||
|
|
||||||
|
toto='$toto'
|
||||||
|
|
||||||
|
toto='$toto'tata
|
||||||
|
echo '$toto'
|
||||||
|
toto='tata'$tata
|
||||||
|
echo '$toto'
|
||||||
|
toto=$toto'tata'
|
||||||
|
echo '$toto'
|
||||||
|
toto='$toto'.tata
|
||||||
|
echo '$toto'
|
||||||
|
|
||||||
|
tata='ta ta'
|
||||||
|
echo '$tata'
|
||||||
|
|
||||||
|
echo '$'
|
||||||
|
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
"toto"
|
||||||
|
EOF
|
||||||
12
test/echo.bash
Normal file
12
test/echo.bash
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo -n titi:
|
||||||
|
echo -e 'tata\n'
|
||||||
|
echo -E 'tutu\n'
|
||||||
|
|
||||||
|
echo -n tata tutu tete
|
||||||
|
|
||||||
|
toto="to to"
|
||||||
|
echo $toto
|
||||||
|
|
||||||
|
echo to $toto
|
||||||
12
test/err/err.bash
Normal file
12
test/err/err.bash
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
var[a
|
||||||
|
read var+=a
|
||||||
|
export var+=a
|
||||||
|
export var=()
|
||||||
|
|
||||||
|
[[ a = b ]] toto
|
||||||
|
|
||||||
|
echo >() <()
|
||||||
|
|
||||||
|
function toto-titi{ true; }
|
||||||
66
test/err/err.sh
Normal file
66
test/err/err.sh
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
read var=a
|
||||||
|
var+=a
|
||||||
|
var=(foo)
|
||||||
|
|
||||||
|
$((var~2))
|
||||||
|
|
||||||
|
${!var}
|
||||||
|
${~}
|
||||||
|
${#var-a}
|
||||||
|
`echo \`echo\` `
|
||||||
|
|
||||||
|
$(( (var) )
|
||||||
|
|
||||||
|
>& /dev/null
|
||||||
|
echo &> /dev/null
|
||||||
|
|
||||||
|
cat 2< file
|
||||||
|
cat <<< var
|
||||||
|
echo >
|
||||||
|
|
||||||
|
echo &| cat
|
||||||
|
echo |& cat
|
||||||
|
|
||||||
|
[[ a = b ]] foo
|
||||||
|
|
||||||
|
()
|
||||||
|
|
||||||
|
fct() abc
|
||||||
|
{ ; }
|
||||||
|
|
||||||
|
fct() { }
|
||||||
|
|
||||||
|
typeset var
|
||||||
|
var=val read var
|
||||||
|
case foo ; esac
|
||||||
|
case foo in aiae ; esac
|
||||||
|
case foo in ) ; esac
|
||||||
|
case foo in a) ; b) esac
|
||||||
|
|
||||||
|
for 2 in a ; do true ; done
|
||||||
|
for foo do ; do true ; done
|
||||||
|
for foo & ; do true ; done
|
||||||
|
for I in ; true ; done
|
||||||
|
|
||||||
|
while
|
||||||
|
do true ; done
|
||||||
|
|
||||||
|
while true ; do
|
||||||
|
done
|
||||||
|
|
||||||
|
if true ;then
|
||||||
|
fi
|
||||||
|
|
||||||
|
if
|
||||||
|
then true ; fi
|
||||||
|
|
||||||
|
if true ; then true ; else
|
||||||
|
fi
|
||||||
|
|
||||||
|
fct-foo() { true; }
|
||||||
|
|
||||||
|
function foo { true; }
|
||||||
|
|
||||||
|
{ foo; } bar
|
||||||
11
test/fct.sh
Normal file
11
test/fct.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
toto() {
|
||||||
|
echo toto
|
||||||
|
}
|
||||||
|
|
||||||
|
tata () {
|
||||||
|
echo tata
|
||||||
|
}
|
||||||
|
|
||||||
|
toto
|
||||||
18
test/for.sh
Normal file
18
test/for.sh
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
__for_fct() {
|
||||||
|
for I in ; do
|
||||||
|
echo $I
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
for N
|
||||||
|
do
|
||||||
|
echo $N
|
||||||
|
done
|
||||||
|
|
||||||
|
for I in $(seq 1 10); do
|
||||||
|
echo "toto $I"
|
||||||
|
done
|
||||||
|
|
||||||
|
__for_fct toto tata
|
||||||
48
test/heredocument.sh
Normal file
48
test/heredocument.sh
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
toto
|
||||||
|
tata
|
||||||
|
EOF
|
||||||
|
|
||||||
|
toto=toto
|
||||||
|
cat << EOF | grep toto
|
||||||
|
$toto
|
||||||
|
tata
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
'
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF |
|
||||||
|
azjeha
|
||||||
|
kijejaze
|
||||||
|
ljksdjk
|
||||||
|
EOF
|
||||||
|
cut -c1
|
||||||
|
|
||||||
|
grep -q toto << EOF &&
|
||||||
|
toto
|
||||||
|
EOF
|
||||||
|
echo found toto
|
||||||
|
|
||||||
|
{ cat << EOF | grep toto; }
|
||||||
|
toto
|
||||||
|
tata
|
||||||
|
EOF
|
||||||
|
|
||||||
|
( cat << EOF | grep toto )
|
||||||
|
toto
|
||||||
|
tata
|
||||||
|
EOF
|
||||||
|
|
||||||
|
{ cat << EOF | grep toto && echo true; echo eyy; }
|
||||||
|
toto
|
||||||
|
tata
|
||||||
|
EOF
|
||||||
|
|
||||||
|
( cat << EOF | grep toto && echo true ; echo eyy )
|
||||||
|
toto
|
||||||
|
tata
|
||||||
|
EOF
|
||||||
11
test/if.sh
Normal file
11
test/if.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -n "$DEBUG" ]
|
||||||
|
then
|
||||||
|
echo "set"
|
||||||
|
elif [ -n "$TOTO" ]
|
||||||
|
then
|
||||||
|
echo "toto lol"
|
||||||
|
else
|
||||||
|
echo "not set"
|
||||||
|
fi
|
||||||
9
test/include.sh
Normal file
9
test/include.sh
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
RAW="$(%include -f pipe.sh brace.sh)"
|
||||||
|
|
||||||
|
echo "$RAW"
|
||||||
|
|
||||||
|
{ %include -f pipe.sh; } | grep -q arch && echo "btw i use arch"
|
||||||
|
|
||||||
|
%include *.sh
|
||||||
15
test/manip.sh
Normal file
15
test/manip.sh
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
var="marijuana"
|
||||||
|
echo ${#var}
|
||||||
|
|
||||||
|
echo ${var-foo}
|
||||||
|
echo ${var+foo}
|
||||||
|
echo ${foo-foo}
|
||||||
|
echo ${foo+foo}
|
||||||
|
|
||||||
|
echo ${var#*a}
|
||||||
|
echo ${var##*a}
|
||||||
|
echo ${var%a*}
|
||||||
|
echo ${var%%a*}
|
||||||
|
|
||||||
8
test/pipe.sh
Normal file
8
test/pipe.sh
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
grep "^ID=" /etc/os-release | cut -d '=' -f2-
|
||||||
|
|
||||||
|
echo toto | #
|
||||||
|
grep to
|
||||||
|
|
||||||
|
echo '#toto' | grep '#toto'
|
||||||
3
test/prompt.sh
Normal file
3
test/prompt.sh
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
read -r prompt || echo $?
|
||||||
5
test/redir.sh
Normal file
5
test/redir.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{ echo toto >&2; } 2>&1
|
||||||
|
|
||||||
|
{ echo tata; }>/dev/null
|
||||||
|
|
||||||
|
grep abc < test/redir.sh
|
||||||
9
test/resolve.sh
Normal file
9
test/resolve.sh
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "a$(%resolve echo tata titi)b"
|
||||||
|
|
||||||
|
echo $(%resolve cut -d ' ' -f1 /proc/uptime)s
|
||||||
|
|
||||||
|
%resolve echo "TIME=$(cut -d ' ' -f1 /proc/uptime)s;echo This was compiled at \${TIME}s uptime"
|
||||||
|
|
||||||
|
FOO=$(%resolve echo bar) echo foo
|
||||||
10
test/subshell.sh
Normal file
10
test/subshell.sh
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
TOTO=toto
|
||||||
|
(TOTO=tata; echo $TOTO; echo a) | sed 's|a|titi|g'
|
||||||
|
echo $TOTO
|
||||||
|
|
||||||
|
echo a | ( grep a && echo b )
|
||||||
|
|
||||||
|
echo ab | ( grep a )
|
||||||
|
pwd
|
||||||
|
(cd /)
|
||||||
|
pwd
|
||||||
31
test/var.sh
Normal file
31
test/var.sh
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
foo()
|
||||||
|
{
|
||||||
|
echo $FOO
|
||||||
|
}
|
||||||
|
|
||||||
|
TOTO=tata
|
||||||
|
TATA=titi
|
||||||
|
echo $TOTO
|
||||||
|
echo "$TOTO $TATA$TITI"
|
||||||
|
echo "${AYE-aye}"
|
||||||
|
|
||||||
|
export TUTU=ta
|
||||||
|
|
||||||
|
foo
|
||||||
|
FOO=bar foo
|
||||||
|
BAR=foo foo
|
||||||
|
ABCD=$(FOO=true foo)
|
||||||
|
echo $ABCD
|
||||||
|
nul=/dev/null
|
||||||
|
echo toto > "$nul"
|
||||||
|
|
||||||
|
somevar=val
|
||||||
|
echo $somevar
|
||||||
|
unset somevar
|
||||||
|
echo $somevar
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
$TOTO
|
||||||
|
EOF
|
||||||
23
test/while.sh
Normal file
23
test/while.sh
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
I=0
|
||||||
|
while [ $I -lt 10 ]
|
||||||
|
do
|
||||||
|
I=$((I+1))
|
||||||
|
echo "$I"
|
||||||
|
done
|
||||||
|
|
||||||
|
I=0
|
||||||
|
until [ $I -eq 10 ]
|
||||||
|
do
|
||||||
|
I=$((I+1))
|
||||||
|
echo "$I"
|
||||||
|
done
|
||||||
|
|
||||||
|
I=0
|
||||||
|
while
|
||||||
|
I=$((I+1))
|
||||||
|
echo "$I"
|
||||||
|
[ $I -lt 10 ]
|
||||||
|
do true
|
||||||
|
done
|
||||||
Loading…
Reference in a new issue