2015-04-09 5 views
0

Я столкнулся с проблемой компиляции для условия IF, в то время как другой скрипт в том же месте использует то же самое условие работает нормально. Другой скрипт также проверяет, присутствует ли папка Release в коде, или нет, это не приведет к некоторой операции. Любая идея, почему тот же самый ИФ терпит неудачу, поскольку я звоню из того же места?) {if был неожиданным в это время

@echo OFF 

cd .. 
cd debug/bin/8209 

if not exist Release (
set val2 "" 
echo %val2% 
echo start the script 

readelf qcdsp28909.mbn -l | awk '{if (match($6,/0x/)){if ($1 == "LOAD") print strtonum($6)}}'| awk '{ sum+=$1} END {print sum/1024/1024}' > value.txt 2>&1 

set /p size=<value.txt 

echo %size% 

for /f "tokens=1,2 delims=." %%a in ("%size%") do (
    set first_part=%%a 
    set second_part=%%b 
) 

set second_part=%second_part:~0,1% 
echo %second_part% 
if defined second_part if %second_part% GEQ 5 ( 

    set /a rounded=%first_part%+1 
) else ( 
    set /a rounded=%first_part% 
) 

echo %rounded% 

set /a rounded= "%rounded% * 1024 * 1024" 

echo %rounded% 

call cmd /c exit /b %rounded% 
set hex=%=exitcode% 


set val2=%hex% 
setx val2 %hex% /m 
echo %val2% 
) 

ответ

0

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

readelf qcdsp28909.mbn -l | awk "{if (match($6,/0x/)){if ($1 == 'LOAD') print strtonum($6)}}" | awk "{ sum+=$1} END {print sum/1024/1024}" > value.txt 2>&1 

Таким образом, круглые скобки внутри ваших awk заявлений не будет оцениваться как часть блока партии в круглых скобках код (if not exist Release (...) блок) он живет.

+0

Я уже пытался это изменить, но положить «» не дает мне желаемого результата. Он возвращает значение 0 в качестве вывода. –

+0

Извините, я очень мало знаю о синтаксисе 'awk'. Может быть, ваша переменная 'sum' передается как строка или целое число, когда оно должно быть float? Возможно, вам повезло с просьбой пометить новый вопрос как 'awk'. Вы также можете попытаться поместить свои аргументы awk в файл '.awk' и попробовать' awk -f 'scriptfile.awk '', чтобы исключить возможность проблемы, характерной для командной строки. Кстати, что такое 'strtonum'? В вашем втором awk-заявлении нет способа узнать, что вывод первого 'awk' прошел через' strtonum'. – rojo

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