2015-04-28 2 views
0

Im пытается заменить число в файле с вычисленной плавающей переменной в файле bash. Поэтому я пытаюсь заменить 1.1111 на значение «km» и сохранить его в файле mesh.in. Я продолжаю получать ошибку в строке sed, я думаю, что может возникнуть проблема с плавающей переменной. Эхо «$ км» не работает, так что я знаю, что км не проблемаbash заменить строку плавающей переменной

#!/bin/bash 
read -p "Angle in degrees : " n1 
read -p "bcsa : " n2 
cd viv_example_se2d 
sed s/^bcsa.\*/"bcsa $n2"/ runfile.viv >temp 
mv -f temp runfile.viv 
cd ../ 
for i in $(seq 2 0.5 12) 
do 
    if [ ! -d U*_$i ];then 
     mkdir U*_$i 
    fi 
    printf -v "km" "%.4f\n" $(echo | bc | awk "BEGIN {print 4*3.14159265359*3.14159265359/($i*$i)}") 
    echo "$km" 
    cd viv_example_se2d 
    sed s/1.1111/$km/g mesh_master.in > temp$i 

    mv -f temp$i mesh.in 
    cd ../ 
    echo $home/lustre/projects/p057_swin/ogoldman/Ellipse_$n1/U*_$i | xargs -n 1 cp viv_example_se2d/* 
done; 
+0

Это 'эхо | bc | 'бит этой команды ничего не делает и может быть отброшен. –

+0

Какая ошибка вы получаете от 'sed'? –

+0

sed: -e выражение # 1, char 15: команда unterminated 's –

ответ

1

Проблема заключается в новой строки в значении $km. Это путает sed.

Это, как говорится, этот сценарий также немного беспорядок.

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

Не требуется xargs до cp несколько файлов, которые можно расширить посредством glob. cp с радостью возьмет сразу несколько файлов для копирования. (О, или это копирование нескольких файлов в каталоги, созданные через этот glob?)

У вас есть бесполезный бит echo | bc | рядом с командой awk.

Использование полных/относительных путей в sed/etc. лучше, чем cd вокруг вокруг.

+0

Did not означает иметь '-i' и '| bc - l '. Я играл вокруг, пытаясь сделать несколько разных вещей и не смог его исправить. Сценарий был изменен. Также не беспокойтесь о '$ ..../U * _ $ i' у него был длинный путь, поэтому я просто удалил начало, которое не важно –

+1

Вам нужно показать нам ** точно ** код, с которым вы работаете, и ** точно ** проблема, с которой вы сталкиваетесь, или мы не можем вам помочь. –

+0

Извините, ive отредактирован и выставлен полный скрипт –

Смежные вопросы