name: "Builtins: eval"
cases:
- name: "Basic eval usage"
stdin: |
eval 'echo 1 + 1 == $((1 + 1))'
- name: "eval with return in function"
stdin: |
f() {
eval 'return 42'
echo "Should not reach here"
}
f
echo "Exit code: $?"
- name: "eval with exit"
stdin: |
eval 'exit 42'
echo "After eval'd exit"
- name: "eval with break in loop"
stdin: |
for i in 1 2 3; do
eval 'break'
echo "After eval'd break"
done
echo "After loop"
- name: "eval with continue in loop"
stdin: |
for i in 1 2 3; do
echo "Iteration $i"
eval 'continue'
echo "After eval'd continue"
done
echo "After loop"
- name: "eval with nested break levels"
stdin: |
for i in 1 2; do
for j in a b c; do
eval 'break 2'
echo "After eval'd break (inner loop)"
done
echo "After eval'd break (outer loop)"
done
echo "After outer loop"