О выполнении программы Python в сценарии оболочки, который запланирован на crontab

Я бы взял perl , потому что тогда вы можете разделить и объединить :

#!/usr/bin/env perl
use strict;
use warnings;

while ( <DATA> ) {
   chomp;
   my @fields = split /;/; 
   s/\s+//g for @fields;
   print join ";", @fields, "\n";
}

__DATA__
03139; 5;        IT1234978208; 20150930  ;  CTZ 13/31.12.15;
03137; 6;        IT1234978206; 20151015  ;  CTZ 13/31.11.18;
03134; 8;        IT1234974406; 20151212  ;  CTZ 13/37.13.17;

Теперь, это удаляет все пробелы в полях, давая:

03139;5;IT1234978208;20150930;CTZ13/31.12.15;
03137;6;IT1234978206;20151015;CTZ13/31.11.18;
03134;8;IT1234974406;20151212;CTZ13/37.13.17;

Но если вы просто хотите удалить начальный / конечный пробел:

s / ^ \ s + | \ s + $ // g для @fields;

Это может быть однострочное, как:

perl -F; -lape 's/^\s+|\s+$//g for @F; print join ";", @F;'

Где:

  • -F; устанавливает разделитель
  • -l говорит об автоматическом удалении / повторном добавлении окончаний строк.
  • -a - автоматическое разделение (по разделителю в -F или пробел по умолчанию)
  • -e - «выполнить этот фрагмент».
2
27.01.2018, 01:51
2 ответа

Попробуйте явно перейти к каталогу внутри самого сценария оболочки, используя cd и полный путь. У меня была аналогичная проблема, и я решил ее, сделав это. Например, в верхней части вашего скрипта после #! / Bin / bash вы должны поместить:

cd /home/pi/Some_Directory`
# the rest of your script
0
27.01.2020, 22:54

Это, кажется, относительно старый вопрос, но я считаю, что проблема связана с заголовком (Shebang). Ваш скрипт имеет следующий заголовок:

#! /bin/bash

Однако он должен быть:

#!/bin/bash 

То есть без пробелов между #! и /bin/bash. Это случалось со мной раньше, и удаление пробела решило это.

0
27.01.2020, 22:54

Теги

Похожие вопросы