Титла: shell скрипт Публикувано от: AMD в Dec 28, 2011, 21:00 Значи въпроса ми е следния. Изпитвам затруднения да интегрирам допълнителна функция към дадена команда.
Код
Код
Но не съм сигурен дали изобщо може да заработи по този начин? Как точно трябва да се сформира реда с командата Код , за да може да вкара размера на файла в променлива която да се чете в Код
Титла: Re: shell скрипт Публикувано от: romeo_ninov в Dec 28, 2011, 22:19 а ако направиш нещо от рода няма ли да работи:
Код: a=$(pv -ptrs $size -i2 $iso) Титла: Re: shell скрипт Публикувано от: gat3way в Dec 28, 2011, 23:55 РОКО, шел променливите не са файлови дескриптори и не можеш да pipe-ваш изхода в тях. romeo_ninov ти е написал едното решение, другото е да ползваш обратни кавички:
Цитат pv -ptrs `du -csh $iso` -i2 при положение че си export-нал $iso. Имай предвид че без да проверяваш exit кода от du, можеш да си докараш неприятни проблеми. Титла: Re: shell скрипт Публикувано от: AMD в Dec 29, 2011, 09:44 РОКО, шел променливите не са файлови дескриптори и не можеш да pipe-ваш изхода в тях. romeo_ninov ти е написал едното решение, другото е да ползваш обратни кавички: Ти ме разбра по-точно какво имам в предвид. Но неприятностите са че трябва да извлека от изхода само цифрите. Може би ще го оставя както е. Титла: Re: shell скрипт Публикувано от: gat3way в Dec 29, 2011, 11:04 Да не кажеш че съм лош само :)
Цитат pv -ptrs `du -csh -B1M $iso 2>/dev/null|grep total|awk '{print $1}'` -i2 Това е в мегабайти, ако ти трябва в други единици виж man страницата на du. Титла: Re: shell скрипт Публикувано от: AMD в Dec 29, 2011, 12:27 Да не кажеш че съм лош само :) То точно в мегабайти ми трябва да е изхода, ама виж някак ми трябва само да отчете обема без текста -> du -csh iso/altlinux-6.0.0-centaurus-x86_64-ru-live-cd.iso 661M iso/altlinux-6.0.0-centaurus-x86_64-ru-live-cd.iso 661M итого Титла: Re: shell скрипт Публикувано от: gat3way в Dec 29, 2011, 12:36 Дам, не обича да му излиза на руски :)
Айде пробвай така: pv -ptrs `du -csh -B1M $iso 2>/dev/null|tail -n1|awk '{print $1}'` -i2 Титла: Re: shell скрипт Публикувано от: AMD в Dec 29, 2011, 12:46 Дам, не обича да му излиза на руски :) То хубаво ама нещо не мога да го излъжа, и не знам дали има шансове, значи с pv искам да изкарам прогрес индикатор при изпълнение на dd но трябва някак за опцията "-s" във "pv" да се вземе размера на ISO образа пример "pv -s 600m" и само тази идея ми дойде на ум но нещо не е белязана от успех. При стартиране на трансфера прогрес индикатора показва .. [======================================================================] 100000% Нещо което не е реално уж трябва да започне от 0% и да брои до 100% в зависимост от размера при du -csh $iso Титла: Re: shell скрипт Публикувано от: gat3way в Dec 29, 2011, 13:06 Ами показва тези неща най-вероятно заради мерните единици. Това което съм ти дал връща големината на iso файла в мегабайти, а pv си прави сметките в байтове. Демек максималната големина ти е 600, но dd ще му подаде 600 милиона байта, демек далееееч над 100%. Виж внимателно аргументите към du командата и го промени от мегабайти, да ти връща големината в байтове.
Титла: Re: shell скрипт Публикувано от: AMD в Dec 29, 2011, 13:25 Ами показва тези неща най-вероятно заради мерните единици. Това което съм ти дал връща големината на iso файла в мегабайти, а pv си прави сметките в байтове. Демек максималната големина ти е 600, но dd ще му подаде 600 милиона байта, демек далееееч над 100%. Виж внимателно аргументите към du командата и го промени от мегабайти, да ти връща големината в байтове. Значи аз го оправих да показва реално като махнах -B1M всичко стана нормално. http://imglink.ru/pictures/29-12-11/3aae4cb73a0597acd414299c73a53fc3.jpg А ето и кода, малко е грозен все още но е в процес на доработка, преди ги бях понаучил ама сега съм забравил доста от нещата как стават. Титла: Re: shell скрипт Публикувано от: AMD в Dec 29, 2011, 13:55 Е gat3way не вярвах че някога мога да ти кажа думата Благодаря.
Ето и крайния код ако някой има желание да го ползва или да го подобрява. Код
Титла: Re: shell скрипт Публикувано от: gat3way в Dec 29, 2011, 20:38 ROKO_, разбирам че Убунту не ти е любима дистрибуция, ама няма да е зле да промениш това:
Цитат if [ `id -u` -ne 0 ] ; Това няма да сработи ако викаш скрипта със sudo. Проверявай $EUID променливата - ще сработи и в двата случая. Титла: Re: shell скрипт Публикувано от: AMD в Dec 29, 2011, 21:56 ROKO_, разбирам че Убунту не ти е любима дистрибуция, ама няма да е зле да промениш това: $EUID ?! Нещо не мога да зацепя. Титла: Re: shell скрипт Публикувано от: gat3way в Dec 29, 2011, 22:26 A, това принтвало euid-а все пак, моя грешка. Както и да е, $EUID е по-бърз вариант, не се вика външна програма.
Титла: Re: shell скрипт Публикувано от: shoshon в Dec 29, 2011, 23:08 Код
Това не е никак хубав код! Как ще спреш програмата? В смисъл Ctrl+Backspace трябва да се използва... Титла: Re: shell скрипт Публикувано от: AMD в Dec 29, 2011, 23:27
Аз не искам да се спира програмата, а да попита отново за валиден файл/дял |