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
|
||||
/test
|
||||
/run-tests.sh
|
||||
/Zmakefile
|
||||
/TODO
|
||||
TODO
|
||||
/lxsh
|
||||
/gmon.out
|
||||
gmon.out
|
||||
/profiling/*
|
||||
/profiling.*
|
||||
/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