Вы получаете ошибку, потому что bash не видит ls -t *.csv | head -1
как команду, а как аргументы команды python (поэтому каждое слово становится аргументом, например: args [2] будет 'ls', args[3] будет '-t' и т. Д.).
Чтобы исправить это, вы можете сохранить вывод ls -t *.csv | head -1
в переменной, а затем передать переменную команде python, сохранив ее как bashфайл, а затем выполните его:
#!/bin/bash
output=$(ls -t *.csv | head -1)
python csv2sql.py -t products $output | head -1 > sql.output
Обратите внимание, что в настоящее время у меня нет доступа к моей машине с Linux и я не могу ничего тестировать, поэтому я предполагаю, что команда ls -t *.csv | head -1
делает то, чтоВы хотите это сделать.Приведенное выше решение также не очень аккуратное, поскольку оно использует и bash, и python, поэтому лично я бы рекомендовал исследовать модуль подсистемы и использовать его для всех решений на python.