2017-01-12 10 views
0

Я использую следующий код, чтобы ГРЭП значения, которые вычисляются путем добавления и вычитания 1 из 2-го и 3-го столбца следующим образом:Вычитание числа от переменного метания ошибки

while read intron ; do 
    start=$(grep -w $intron ../file_to_be_grepped_from | awk '{print $2}') 
    end=$(grep -w $intron ../file_to_be_grepped_from | awk '{print $3}') 
    str=$(($start-1)) 
    en=$(($end+1)) 
    grep -w $str ../file_to_be_grepped_from 
    grep -w $en ../file_to_be_grepped_from 
    echo $intron 
    done < file 

Однако та часть, где я добавление и вычитание 1 из 3-го и 2-го столбцов соответственно, я получаю сообщение об ошибке «46844234-1: синтаксическая ошибка в выражении (токен ошибки« 46844234-1 »)» для строки в файле, который я получаю grepping из (file_to_be_grepped_from) , Строки в файле, из которого они являются grepped выглядеть следующим образом:

chr9 46844104 46844233 ENSG00000226007:E2 + 
    chr9 46844104 46846023 ENSG00000226007:I2 + 
    chr3 21584308 21584487 ENSG00000225542:E1 + 
    chr3 21620681 21620873 ENSG00000225542:E2 + 

Я пытаюсь выяснить, если ошибка происходит из-за повторяющиеся строки или что-то другое, я попробовал весь возможный синтаксис для вычитания числа из переменная.

+2

Какие оболочки вы используете? У вас есть линия «she-bang» в верхней части вашего скрипта? '#!/usr/bin/env bash'. Еще одна важная вещь - не забудьте добавить переменные в двойные кавычки, такие как '' $ intron'' и т. Д., Чтобы избежать сюрпризов. – codeforester

ответ

1
str=$(grep -w $intron ../file_to_be_grepped_from | awk '{print($2-1)}') 
en=$(grep -w $intron ../file_to_be_grepped_from | awk '{print($3+1)}') 
0

Пожалуйста, попробуйте:

start="101010" 
end="999999" 
let str=$start-1 
let en=$end+1 
echo $str  $en 
    101009 1000000