Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: bILLY в Jun 29, 2014, 10:00



Титла: if функцията в sh скрипт
Публикувано от: bILLY в Jun 29, 2014, 10:00
Здравейте, не съм писал от отдавна, но тези дни имах малко време и разцъках по сървъра  ;D (който е вече с 31 дена ъптайм). Та въпроса ми е следния: направих едни sh скриптове в /bin, които например да могат да се стартират от потребителите и да копират прекомпилиран софтуер направо в домашните си директории, като например get-eggdrop, get-psybnc ... обаче, когато стартирам командата за втори път ми изкарва съобщение "cp: cannot overwrite non-directory", което е грозно за крайния потребител и естествено защото се опитва да презапише отново върху същата директория.

Как да направя някакъв if ~/eggdrop exist - then eggdrop.new примерно?
Any suggestions? Че много ми куца шел скриптинга ...   :P


Титла: Re: if функцията в sh скрипт
Публикувано от: Ali Nebi в Jun 29, 2014, 11:17
Здравей,

хвърли един поглед: http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html и тук http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-6.html


Титла: Re: if функцията в sh скрипт
Публикувано от: bILLY в Jun 29, 2014, 11:35
Да благодаря, свърши работа. Но пък сега трябва да вкарам някаква номерация след това, защото като е с .new пак го презаписва и вадии съобщения. Трябва да стане нещо като $number.  ???


Титла: Re: if функцията в sh скрипт
Публикувано от: Ali Nebi в Jun 29, 2014, 12:08
Здравей,

защо просто не презапишеш предишния файл или не искаш да го правиш?


Титла: Re: if функцията в sh скрипт
Публикувано от: Ali Nebi в Jun 29, 2014, 12:15
Иначе можеш да слагаш номерация или пък друг вариант - актуалната версия си седи например eggdrop, а старите версии ги преименувай на eggdrop-20140629 примерно, като слагаш някаква дата.


Титла: Re: if функцията в sh скрипт
Публикувано от: bILLY в Jun 29, 2014, 14:36
Оправих се ...

Код:
if [ -d $HOME/eggdrop ] ; then
  cp -rf /etc/pre/eggdrop/ ~/eggdrop$(date +"%s") ; else
  cp -rf /etc/pre/eggdrop/ ~/eggdrop
fi

echo ""
echo  "Getting eggdrop ..."

В крайна сметка, като номер, вкарах броя на секундите %s   seconds since 1970-01-01 00:00:00 UTC ...  :P