Sugeriría reestructurar su lógica :poner el código "fallthrough" en una función en su lugar:
fallthrough() { echo 'fallthrough worked!'; }
for input in foo bar; do
for var in 1 2; do
echo "$input $var"
case $input in
foo)
if (( var == 1 )); then
echo "falling through"
fallthrough
else
echo "not falling through"
fi
;;
*) fallthrough;;
esac
done
done
salidas
foo 1
falling through
fallthrough worked!
foo 2
not falling through
bar 1
fallthrough worked!
bar 2
fallthrough worked!
Я рад видеть, что вы знаете о падениях C -Shell.
Вот тот же сценарий, преобразованный в оболочку C -(Edit:обновленный для вывода $usage
в случаях отсутствия аргументов или более 1 аргумента):
#!/usr/bin/env csh
set usage="Usage: $0 {foo|bar}"
if ( $#argv != 1 ) then
echo $usage
else
switch ($argv[1])
case 'foo':
/path/to/foo.sh
breaksw
case 'bar':
/path/to/bar.sh
breaksw
default:
echo $usage
breaksw
endsw
endif