Используйте встроенное reversed()
функция:
>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
... print(i)
...
baz
bar
foo
К также получают доступ к исходному индексу, используют enumerate()
в Вашем списке прежде, чем передать его reversed()
:
>>> for i, e in reversed(list(enumerate(a))):
... print(i, e)
...
2 baz
1 bar
0 foo
С тех пор enumerate()
возвраты генератор и генераторы не могут быть инвертированы, необходимо преобразовать его в list
сначала.
[РЕДАКТИРОВАТЬ]
номера имели основную идею - запустить "mysql" только один раз, и предоставленные номера решений должны работать, но при этом FIFO остается включенным. disk.
nos тоже был правильным, что я напортачил: простой " echo X> FIFO
" закроет FIFO; Я неправильно вспомнил. И мои (удаленные) комментарии относительно времени не применяются, извините.
Тем не менее, вам не нужен FIFO, вы можете использовать межпроцессный конвейер. И просматривая мои старые сценарии MySQL, некоторые работали аналогично этому, но вы не можете разрешить никаким командам писать в стандартный вывод (без некоторых уловок с "exec").
#!/bin/bash
(
echo "LOCK TABLES mytable READ ;"
echo "Doing something..." >&2
echo "describe mytable;"
sleep 5
echo "UNLOCK tables;"
) | mysql ${ARGUMENTS}
Другой вариант - назначить дескриптор файла в FIFO, а затем запустить его в фоновом режиме. Это очень похоже на то, что сделали номера , но " внутри «прочего»). И это определенно нетривиально.
Вот один способ, я уверен, что есть способ попроще ..
mkfifo /tmp/mysql-pipe
mysql mydb </tmp/mysql-pipe &
(
echo "LOCK TABLES mytable READ ;" 1>&6
echo "Doing something "
echo "UNLOCK tables;" 1>&6
) 6> /tmp/mysql-pipe