Forrest
все должно работать в вечном цикле
В консоли набери
i=0; while true; do echo "number #$((++i))"; sleep 1; done
func() {
local i=0
for i in `seq 1 10`; do
echo "number #$i"
sleep 1
done
}
while true; do func; done
Forrest
а алгоритм и обработка исключений не дают коду “упасть”. С shell это возможно?
В Shell исключений нет, есть коды возврата из функций и из программ, которые можно проверять.
cat x
echo $?
cat /etc/passwd
echo $?
И обычно программа левая квадратная скобка (сокращение имени программы test) используется для проверки кода возврата, существования файла и так далее.
Но также и сами конструкции Shell могут проверять коды возврата программ, что даже программа test не нужна.
func() {
local filename=$1
if cat "$filename" &>/dev/null; then
echo "See file $filename"
else
echo "Can't see file $filename"
fi
}
func x
func /etc/passwd
[guest@localhost ~]$ func x
Can't see file x
[guest@localhost ~]$ func /etc/passwd
See file /etc/passwd
[guest@localhost ~]$
Конвейерная гибкость - тоже частый приём
func1()
{
for i in `seq $1`; do
echo -n abc
done
}
func2()
{
sed 's/.*/&'"$1"'&/'
}
func3()
{
awk '{ print char_left $0 char_right }' char_left="$1" char_right="$2"
}
run()
{
func1 1 | func2 x | func3 "|" "|"
func1 2 | func2 X | func3 "-===" "===-"
}
run
[guest@localhost ~]$ run
|abcxabc|
-===abcabcXabcabc===-
[guest@localhost ~]$
Forrest
Надо чтобы код работал в разных системах без проблем.
Для каждой системы обычно своя версия программы пишется. Питон также не поможет сделать кроссплатформенное приложение, так как разные операционные системы различаются по своей работе с файлами, с сетями и прочим вещам. Питон в лине при записи в файл пишет с LF на конце строки, а в винде при записи в файл пишет с CR LF на конце строки. При чтении в бинарном режиме в лине из файла, созданного в винде, код ломается, хотя файл писался этим же кодом, просто запущенным в той системе в то время. То есть сам питон, его интерпретатор по-разному работает в разных операционных системах. Также, например, программа ping в одной операционной системе и программа ping в другой операционной системе имеют разные опции, хотя и называются одинаково.