<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]bash环境下使用for i in 顺序加1输出和倒序减1输出和输出连续IP和PingN次的一行脚本写法，以及解决shell脚本for i in {0..10}输出{0..10}的问题，shell for循环打印1到100的数字，可以导入文本，也可以用awk的NR来输出行号]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 21 Oct 2010 05:23:24 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<textarea name="code" class="php" rows="15" cols="100">
if test &quot;x&quot; == &quot;x&quot; ; then&nbsp;&nbsp;echo &quot;jack&quot;;fi
for i in &#123;1..10&#125; ;do if [ &quot;$i&quot; == &quot;6&quot; ]; then echo &quot;six&quot;;fi;done

</textarea><br/>for ...;do ...done<br/>if [] then ...;fi<br/>&#124; 错误&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; 修正&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; 说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; ------------ &#124; ----------------------------------------- &#124; ------------------------------ &#124;<br/>&#124; `if $i == 6` &#124; `if [ &quot;$i&quot; == &quot;6&quot; ]` 或 `if [[ $i == 6 ]]` &#124; Bash 条件必须用 `[ ]` 或 `[[ ]]` 包裹&nbsp;&nbsp;&#124;<br/>&#124; 缺少 `then`&nbsp;&nbsp;&nbsp;&nbsp;&#124; 在条件后加 `then`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; `if` 语法要求：`if 条件; then 命令; fi` &#124;<br/>&#124; `$i` 未引号&nbsp;&nbsp;&nbsp;&nbsp; &#124; `&quot;$i&quot;`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; 防止变量含空格时出错（好习惯）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;<br/><br/><br/>想要在echo语句中使用$(( ))来计算i+1的值的写法，注意是两个点，不是三个点：<br/><textarea name="code" class="php" rows="15" cols="100">
for i in &#123;1..10&#125;; do echo &quot;$i.contents:变量加1值= $((i + 1))&quot; &gt;&gt; /tmp/jack.txt; sleep 1; done
tail -f /tmp/jack.txt
1.contents:变量加1值= 2
2.contents:变量加1值= 3
3.contents:变量加1值= 4
4.contents:变量加1值= 5

加个换行：
for i in &#123;1..10&#125;; do echo &quot;$i.contents:变量加1值= $((i + 1))&#92;n&quot; &gt;&gt; /tmp/jack.txt; sleep 1; done
</textarea><br/><br/>for i in 输出连续IP和PingN次的一行脚本写法：<br/><textarea name="code" class="php" rows="15" cols="100">
for i in 10.10.0.&#123;100..105&#125; ;do echo $i;d 
one
10.10.0.100
10.10.0.101
10.10.0.102
10.10.0.103
10.10.0.104
10.10.0.105

for i in 10.10.0.&#123;100..105&#125; ;do echo ping
 -c 2 $i;done
ping -c 2 10.10.0.100
ping -c 2 10.10.0.101
ping -c 2 10.10.0.102
ping -c 2 10.10.0.103
ping -c 2 10.10.0.104
ping -c 2 10.10.0.105

for i in 10.10.0.&#123;100..105&#125; ;do echo ping -c 2 $i;done&#124;sh

</textarea><br/><br/><textarea name="code" class="php" rows="15" cols="100">
#for i in &#123;1..1000&#125;;do sleep 1;echo $i;done&nbsp;&nbsp;&nbsp;&nbsp; 
1
2
3
4
</textarea><br/><br/>倒序-1输出：<br/><textarea name="code" class="php" rows="15" cols="100">
for i in `seq 100 -1 1` ;do echo $i;done
</textarea><br/><br/><br/>一）shell for循环打印1到100的数字：<br/>for i in &#123;1..100&#125; ;do time curl http://mp.i*v.XX.com/; done<br/><br/><br/>二）解决shell脚本for i in &#123;0..10&#125;输出&#123;0..10&#125;的问题：<br/><textarea name="code" class="php" rows="15" cols="100">
#!/bin/bash
for i in &#123;0..10&#125;; do
&nbsp;&nbsp;echo $i;
done;
</textarea><br/><br/>输出的却是&#123;0..10&#125;就这么一个字符串。<br/>解决方案：<br/>你执行这段文件用的不是bash,&nbsp;&nbsp;是debian自己实现的dash(debian系的/bin/sh默认指向/bin/dash)<br/>你可以直接<br/>/bin/bash&nbsp;&nbsp;example.sh<br/>或者让sha-bang生效<br/>chmod +x example.sh<br/>./example.sh<br/>参考：https://www.oschina.net/question/1047640_156390<br/>https://www.cnblogs.com/xxiong1031/articles/6884381.html<br/>用/bin/sh是不行的，得用/bin/bash,而 FreeBSD里位置不一样，但也行：<br/>/home/irdcops/shell/forinport.jackxiang.com/forinportredis.sh<br/><textarea name="code" class="php" rows="15" cols="100">
#!/usr/local/bin/bash
echo &quot;mkdir /data/redis/6379&quot;
for i in &#123;6380..6385&#125;;do echo &quot;mkdir /data/redis/&quot;$i;done
echo &quot;chown -R redis /data/redis/6379&quot;
for i in &#123;6380..6385&#125;;do echo &quot;chown -R redis /data/redis/&quot;$i;done
echo &quot;/sbin/chkconfig --add redis&quot;
for i in &#123;6380..6385&#125;;do echo &quot;/sbin/chkconfig --add redis&quot;$i;done
echo &quot;/sbin/chkconfig redis on&quot;
for i in &#123;6380..6385&#125;;do echo &quot;/sbin/chkconfig redis&quot;$i&quot; on&quot;;done
</textarea><br/>#./forinportredis.sh&nbsp;&nbsp;&nbsp;&nbsp; <br/>mkdir /data/redis/6379<br/>mkdir /data/redis/6380<br/>mkdir /data/redis/6381<br/>mkdir /data/redis/6382<br/>mkdir /data/redis/6383<br/>mkdir /data/redis/6384<br/>mkdir /data/redis/6385<br/>chown -R redis /data/redis/6379<br/>chown -R redis /data/redis/6380<br/>chown -R redis /data/redis/6381<br/>chown -R redis /data/redis/6382<br/>chown -R redis /data/redis/6383<br/>chown -R redis /data/redis/6384<br/>chown -R redis /data/redis/6385<br/>/sbin/chkconfig --add redis<br/>/sbin/chkconfig --add redis6380<br/>/sbin/chkconfig --add redis6381<br/>/sbin/chkconfig --add redis6382<br/>/sbin/chkconfig --add redis6383<br/>/sbin/chkconfig --add redis6384<br/>/sbin/chkconfig --add redis6385<br/>/sbin/chkconfig redis on<br/>/sbin/chkconfig redis6380 on<br/>/sbin/chkconfig redis6381 on<br/>/sbin/chkconfig redis6382 on<br/>/sbin/chkconfig redis6383 on<br/>/sbin/chkconfig redis6384 on<br/>/sbin/chkconfig redis6385 on<br/><br/>source ~/.bashrc<br/>alias cforinport=&#039;cd /home/irdcops/shell/forinport.jackxiang.com&#039;<br/><br/>三）用cat和awk输出行号：<br/>最简单的用：nl ，nl命令可以用来给文件添加行号，然后再通过重定向将结果保存到一个新的文件中：<br/>在nl命令中，默认情况下，行号与正文行之间是通过制表符（tab）进行分隔的。<br/>在nl命令中使用-s选项来指定行号与正文行之间的分隔符。例如，如果你想要使用空格作为分隔符，可以这样使用：<br/>通过-s选项，我们将分隔符从默认的制表符更改为了空格：&nbsp;&nbsp; nl -s&#039; &#039; input.txt<br/><textarea name="code" class="php" rows="15" cols="100">
nl -s &#039;&#039; pdfwatcherd.go &gt; /tmp/nl.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#可以直接行号后面加文字，空格都不用，发现原文件里面是空行的，也就没有行号，直接是空行，得注意这个特性。
</textarea><br/>1package main<br/><br/>2import (<br/>3&nbsp;&nbsp;&quot;flag&quot;<br/>4&nbsp;&nbsp;&quot;os<br/><br/>cat用 cat -n xxx.txt，就能输出行号。<br/>AWK打印行号的实现：<br/>cat /etc/resolv.conf&#124;awk &#039;&#123;print NR $0&#125;&#039;<br/>cat /etc/resolv.conf&#124;awk &#039;BEGIN&#123;i=1&#125;&#123;print i$0;i++&#125;&#039;<br/>awk给shell赋值：<br/><div class="code">#！/bin/sh<br/>var=$(awk &#039;&#123;print $1&#125;&#039; tmp.txt）<br/>echo $var</div>注意：var= 后面没有空格；<br/>注意下面： i=$(($i+1))，和awk一样的赋值方式！<br/><br/><div class="code"><br/>i=1<br/>while(( $i&lt;100 ))<br/>do<br/> echo $i<br/> i=$(($i+1))<br/>done</div><br/><br/>AWK的NR用法，打印0--&gt;999的行号，注意：NR-1了，否则是：1--》1000：<br/><div class="code">cat anta_Tbl_User.txt &#124;awk &#039;&#123;print $0NR-1&quot; &quot;$0NR-1&#125;&#039;&nbsp;&nbsp;&gt; anta_Tbl_User_**.sql </div><br/><br/>for 2：<br/><br/><div class="code">for i in `seq 100`<br/>do<br/>if((i%3==0))<br/>then<br/>echo $i<br/>continue<br/>fi<br/>done</div><br/><br/>for 3：<br/><div class="code">for(( i=1;i&lt;100;i++ ))<br/>do<br/>if((i%3==0))<br/>then<br/>echo $i<br/>continue<br/>fi<br/>done</div><br/><br/>输出行号：<br/><textarea name="code" class="php" rows="15" cols="100">
 awk &#039;&#123;print &quot;(&quot;NR&quot;)&quot;&quot;.&quot;,$0&#125;&#039;&nbsp;&nbsp; /data/logs/access_xiyou_u_nginx_module.log &#124;awk &#039;&#123;print $1&#125;&#039;
</textarea>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]bash环境下使用for i in 顺序加1输出和倒序减1输出和输出连续IP和PingN次的一行脚本写法，以及解决shell脚本for i in {0..10}输出{0..10}的问题，shell for循环打印1到100的数字，可以导入文本，也可以用awk的NR来输出行号]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>