копируйте файлы параллельно, читая, какие файлы копировать из нескольких других файлов

Как я уже писал выше, то, что требуется, выполняет следующая утилита: https://github.com/simonwunderlich/FFT_eval

В ней используется существующая карта WLAN ноутбука (при условии, что карта имеет определенный набор микросхем) для правильного БПФ-сканирование в диапазоне WLAN.

Эту утилиту можно настроить для измерения, например, минутные интервалы, когда скрипт добавляется в crontab, или если разрешение не должно быть таким точным, с помощью команды "sleep" в скрипте.

3
17.04.2018, 23:49
1 ответ

У меня есть несколько предложений, поэтому я решил написать ответ.

  1. Существует несоответствие относительно primary_mappings.txtи secondary_mappings.txt, которые называются primary-mappings.txtи secondary-mappings.txtв сценарии. Вы, конечно, должны переименуйте файлы (или измените их имя скриптом ).

  2. Я бы создал две функции для регистрации в STDERR и выхода из программы. Это имеет то преимущество, что лучше читается, менее подвержено ошибкам и позволяет вам выходить из вызовов функций (он отвечает У меня нет механизма для выхода из сценария оболочки):

    trap "exit 1" TERM
    export TOP_PID=$$
    log_error () {
       echo "$1">&2;
    }
    log_error_and_exit () {
       echo "$1">&2;
       kill -s TERM $TOP_PID
    }
    
  3. Кажется, вы хотите протоколировать ошибки в STDERR, но иногда пишете в STDOUT. Предполагая, что вы просто забыли пару >&2, их легко стандартизировать, используя наши недавно созданные функции:

    а.

    [ -z "$clientid" ] && { echo "cannot find clientid for $(hostname -f)"; exit 1; }
    

    становится:

    [ -z "$clientid" ] && { log_error_and_exit "Cannot find ClientID for $(hostname -f)"; }
    

    б.

    *) echo "unknown host: $(hostname -f), exiting." && exit 1 ;;
    

    становится:

    *) log_error_and_exit "Unknown host: $(hostname -f), exiting." ;;
    
  4. Вы, кажется, забыли это сделать:

    If for whatever reason, I cannot find either primary or secondary files for that clientid from that file, then I will exit from shell script and log an error message.

    mappingsByClientID () {
      id=$1 # 1 to 5
      file=$path/${mapfiles[$2]} # 0 to 1
      if [[ $(< $file) != *" $1="* ]]; then
          log_error_and_exit "ClientID $1 out of range for $file";
      fi
      arr=($(sed -r "s/.*\b${id}=\[([^]\]+).*/\1/; s/,/ /g" $file))
      echo "${arr[@]}"
    }
    
  5. Сейчас вы этого не делаете:

    if for whatever reason, I cannot find those files then I want to exit from the shell script with message that tells me what files are missing.

    Так как вы exitкак только обнаружите, что пропавший файл, вы никогда не получите сообщения более чем об одном файле! Решение состоит в том, чтобы создать переменную для отслеживания состояния ошибки,и проверьте его в конце проверки:

    # this is for verification to see all files got copied or not
    # in primary and secondary folder
    set -- "$primary" "$secondary"
    typeset -n array
    errors=false
    for array in pri snd; do
        for num in "${array[@]}"; do
            name="hello_monthly_${num}_999_1.data"
            if [ ! -f "$1/$name" ]; then
                {  log_error "$name not found in $1" && errors=true; }
            fi
        done
        shift
    done
    if [ "$errors" = true ]; then
        exit 1
    fi
    
3
27.01.2020, 21:21

Теги

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