<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Случайная строка в sh]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=6035&amp;type=atom" />
	<updated>2010-08-26T07:57:41Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=6035</id>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83890#p83890" />
			<content type="html"><![CDATA[<p>Огромное спасибо за предоставленную помощь. Насчет eval и let учту на будущее. В первый раз сталкиваюсь с написанием скритпов. Все взлетело.</p>]]></content>
			<author>
				<name><![CDATA[sudoer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9912</uri>
			</author>
			<updated>2010-08-26T07:57:41Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83890#p83890</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83788#p83788" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>sudoer пишет:</cite><blockquote><p>Не работает while все равно.</p></blockquote></div><p>тут не в while проблема:<br />откройте man bash, и нажмите / (это поиск), наберите \&lt;exec\&gt; (это поиск только слова целиком, execute не найдётся), увидите это:<br /></p><div class="quotebox"><blockquote><p>exec [-cl] [-a name] [command [arguments]]<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If&nbsp; command is specified, it <strong>replaces the shell</strong>.&nbsp; No new process is created.&nbsp; The arguments become<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the arguments to command.&nbsp; If the -l option is supplied, the shell places a dash at the&nbsp; beginning<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; of the zeroth arg passed to command.&nbsp; This is what login(1) does.&nbsp; The -c option causes command to<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; be executed with an empty environment.&nbsp; If -a is supplied, the shell passes&nbsp; name&nbsp; as&nbsp; the&nbsp; zeroth<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; argument&nbsp; to&nbsp; the executed command.&nbsp; If command cannot be executed for some reason, a non-interac‐<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tive shell exits, unless the shell option execfail is enabled, in which case it&nbsp; returns&nbsp; failure.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; An interactive shell returns failure if the file cannot be executed.&nbsp; If command is not specified,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; any redirections take effect in the current shell, and the return status is 0.&nbsp; If there is a&nbsp; re‐<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; direction error, the return status is 1.</p></blockquote></div><p>что значит, данная команда <strong>заменяет</strong> оболочку, а вовсе не выполняет строчку. т.е. выполняется первая команда, которая подменяет собой скрипт, и вы вываливаетесь обратно в командную строку. А я вам советовал eval...</p><p>кстати, ампресанд &amp; внутри скриптов не работает, это интерактивная команда. помнится я долго мучился, в поисках решения, оно оказалось простым: достаточно запускать отдельный процесс, и уж он будет работать параллельно. об этом <a href="http://forum.drbatty.ru/viewtopic.php?p=10003#p10003">здесь</a> (уж простите за PR, но повторю, нигде больше не было/не смог найти/непонашему и непонятно) </p><p>И ещё, let следует применять для вычислений, а просто присваивание - для присваивания. У вас наоборот:<br />&nbsp; &nbsp; &nbsp; &nbsp; let NUMA=`wc -l list`<br />&nbsp; &nbsp; &nbsp; &nbsp; NUM=$NUMA+1</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2010-08-25T22:55:49Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83788#p83788</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83658#p83658" />
			<content type="html"><![CDATA[<p>Не работает while все равно.<br />Содержимое <strong>rnd</strong>:<br /></p><div class="codebox"><pre><code>#!/bin/bash
while true
do
        let NUMA=`wc -l list`
        NUM=$NUMA+1
        let &quot;X = $RANDOM % $NUM&quot;
        exec `sed -n &quot;$X p&quot; list`
        sleep 1m
done</code></pre></div><p>Содержимое <strong>list</strong>:<br /></p><div class="codebox"><pre><code>feh --bg-scale /home/user/wallpaper/pika.jpg &amp;
feh --bg-scale /home/user/wallpaper/guroface.jpg &amp;
feh --bg-scale /home/user/wallpaper/water.jpg &amp;
feh --bg-scale /home/user/wallpaper/hiway.jpg &amp;
feh --bg-scale /home/user/wallpaper/lovecube.jpg &amp;
feh --bg-scale /home/user/wallpaper/kassete.png &amp;
feh --bg-center /home/user/wallpaper/sarah.png &amp;
feh --bg-scale /home/user/wallpaper/smile1.jpg &amp;</code></pre></div><p>Собсна, вот. Это работает:<br /></p><div class="codebox"><pre><code>#!/bin/sh

while true
do
        echo &quot;test&quot;
done</code></pre></div><p>PS: без &quot;&amp;&quot; тоже пробовал.</p>]]></content>
			<author>
				<name><![CDATA[sudoer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9912</uri>
			</author>
			<updated>2010-08-25T17:06:40Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83658#p83658</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83634#p83634" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><div class="quotebox"><cite>sudoer пишет:</cite><blockquote><p>почему-то не работает. Может, объясните в чем проблема?</p></blockquote></div><p>не знаю. у меня работает.<br />сейчас пример сделаю...</p></blockquote></div><p>вот: <br /></p><div class="codebox"><pre><code>#!/bin/sh

while true
do
        echo &quot;test&quot;
done</code></pre></div>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2010-08-25T16:24:48Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83634#p83634</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83631#p83631" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>sudoer пишет:</cite><blockquote><p>почему-то не работает. Может, объясните в чем проблема?</p></blockquote></div><p>не знаю. у меня работает.<br />сейчас пример сделаю...</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2010-08-25T16:22:50Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83631#p83631</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83622#p83622" />
			<content type="html"><![CDATA[<p>Спасибо всем, что помогли мне. Я почти все сделал. Но вот никак не могу прикрутить вечный цикл.<br />Конструкция<br /></p><div class="codebox"><pre><code>while true
do
...
...
done</code></pre></div><p>почему-то не работает. Может, объясните в чем проблема?</p>]]></content>
			<author>
				<name><![CDATA[sudoer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9912</uri>
			</author>
			<updated>2010-08-25T16:02:07Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83622#p83622</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83529#p83529" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>sudoer пишет:</cite><blockquote><p>И имеем файл do.sh, при запуске которого через равные промежутки времени (5 минут, например) выбирается случайная строка из list, и подается на исполнение.<br />Собственно, вопрос. Каким должно быть содержание do.sh?<br />С sh не работал раньше, гугль уже гуглил.</p></blockquote></div><p>Выполнение строки: <strong>eval</strong><br />Задержка на 5 минут: <strong>sleep 5m</strong><br />Про <strong>$RANDOM</strong> уже написали. Добавлю, что в bash есть и арифметика - <br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">let X=&quot;2+2*2&quot;<br />echo $X<br />6<br /></div><br />остальное - сами. если не получается <strong>man bash</strong>, или здесь спросите. сегодня писать скрипты за других я не в настроении <img src="https://linuxforum.ru/img/smilies/bx.gif" alt="bx" /></p><p>PS: совсем забыл про свою любимую sed!<br />выбрать строку $X из файла:<br /><strong>sed -n &quot;$X p&quot; файл</strong></p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2010-08-25T13:20:49Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83529#p83529</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83489#p83489" />
			<content type="html"><![CDATA[<p><a href="http://www.opennet.ru/docs/RUS/bash_scripting_guide/x4812.html">Здесь</a> посмотрите.</p>]]></content>
			<author>
				<name><![CDATA[Lupo Alberto]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9018</uri>
			</author>
			<updated>2010-08-25T12:03:08Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83489#p83489</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Случайная строка в sh]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=83466#p83466" />
			<content type="html"><![CDATA[<p>Итак, мы имеем файл <strong>list</strong>, состоящий из нескольких строк:<br /></p><div class="codebox"><pre><code>echo 123
cp -r /home/user/img /usr/img
rm / -rf
reboot
conky
startx</code></pre></div><p>Например так. И имеем файл <strong>do.sh</strong>, при запуске которого через равные промежутки времени (5 минут, например) выбирается случайная строка из <strong>list</strong>, и подается на исполнение.<br />Собственно, вопрос. Каким должно быть содержание <strong>do.sh</strong>?<br />С sh не работал раньше, гугль уже гуглил.</p>]]></content>
			<author>
				<name><![CDATA[sudoer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9912</uri>
			</author>
			<updated>2010-08-25T11:23:19Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=83466#p83466</id>
		</entry>
</feed>
