shell脚本多线程for
Ⅰ shell脚本for循环中如何调用别的程序
把你的.C文件编译成可执行文件,比如你将hello.c编译成文件名为hello的可执行文件,且该可执行文件在目录/usr/bin下,你就可以这么来重复调用该程序:
#!/bin/bash
i=1
for((i=1;i<=300;i++));do
/usr/bin/hello #文件路径不限
done
试试,应该可以!
Ⅱ shell脚本里面for循环一个特殊用法谁知道是怎么用的,如下代码中for var do 这种结构
for var
没有in的 for语句,等于for var in "$@",表示将所有命令行参数依次赋值给变量var,执行for中语句
如果这样调用test函数
test a.txt b.txt
则 for中$var的值依次是a.txt , b.txt
Ⅲ 关于linux shell脚本中for循环的问题
你的变量指定的有问题。你可以这么写:
#!/bin/bash
for i in $( seq 1 100 )
do
echo $i
done
Ⅳ unix shell脚本写一个for循环,比较急!!!
#! /bin/bash
for i in `seq 1 100`; do
echo file$i
touch file$i
done
Ⅳ shell脚本for循环如何表达步长
a="10 9 8 7 6 5 4 3 2 1" --- 可设置其他数字,此处仅举例
for b in ${a}
do
##代码
done
Ⅵ shell脚本如何多线程并发
分享一个在Linux下模拟多线程的并发脚本,使用这个脚本可以同时批量在定义数量的服务器上执行相关命令,比起普通for/while循环只能顺序一条一条执行的效率高非常多,在管理大批服务器时非常的实用。
以下脚本功能是通过scp(也可选rsync)向上千台服务器传更新包,脚本运行后同时在后台有50个scp进程向服务器传包。
#!/bin/bash
ip=`cat iplist.txt|grep -v "#"|awk '{print $1}'` #过滤服务器IP
dir='/usr/local/src' #目标路径
thead_num=50 #自定义并发数,根据自身服务器性能或应用调整大小,开始千万别定义太大,避免管理机宕机
tmp_fifo_file="/tmp/$$.fifo" #以进程ID号命名管道文件
mkfifo $tmp_fifo_file #创建临时管道文件
exec 4<>$tmp_fifo_file #以读写方式打开tmp_fifo_file管道文件,文件描述符为4,也可以取3-9任意描述符
rm -f $tmp_fifo_file #删除临时管道文件,也可不删除
for ((i=0;i<$thead_num;i++)) #利用for循环向管道中输入并发数量的空行
do
echo "" #输出空行
done >&4 #输出重导向到定义的文件描述符4上
for i in $ip #循环所有要执行的服务器
do
read -u4 #从管道中读取行,每次一行,所有行读取完毕后执行挂起,直到管道有空闲的行
{
scp -P 1000 $1 $i:$dir #所有要批量执行的命令都放在大括号内,scp是一个简单实例,可替换任意其他命令及命令组,1000为服务器端的端口
sleep 3 #暂停3秒,给系统缓冲时间,达到限制并发进程数量
echo "" >&4 #再写入一个空行,使挂起的循环继续执行
}& #放入后台执行
done
wait #等待所有后台进程执行完成
exec 4>&- #删除文件描述符
exit 0
Ⅶ 关于shell脚本的for循环问题
数组和字符串的区别
[root@localhost ~]# LINE=`wc -l /etc/passwd|cut -d ' ' -f1`
[root@localhost ~]# for i in {1..$LINE};do echo $i ;done
{1..38}
[root@localhost ~]# for i in {1..38};do echo $i ;done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Ⅷ shell脚本中for循环结果echo输出重复
你这段脚本的问题在于ssh执行后ssh就结束了,count和echo都是在本机执行。可以把count里的命令直接放在ssh中去执行,也不用echo "$count"了。
ssh这段可修改为:
ssh$i".~/.bash_profile&&ls~/Data/dbc/$ACCT_CYCLE/dat/admin/|wc-l"
Ⅸ 关于一个多线程shell脚本的函数调用问题
你这个是不行的 !
首先, shell 没有多线程的说法.
其实, 你这个伪多进程.
然后, 每个 & 产生一个shell子进程,每个子进程都是独立的.
再次, 子进程的变量父进程无法获取到.
所以,你最后 $d , $n 的值都不会变,都是 0 .
Ⅹ shell脚本for循环
原因:
1. 因为你所处理的文件换行符是dos格式的”
” ;
2. 可以使用cat -v 文件名 来查看换行符是否是,如果是上述的,则行结尾会是^m?需要转换成linux/unix格式的”\n”;
3. 具体转换办法就是转换换行符 。
可以用sed命令处理一下文件,命令如下:?
1. sed ‘s/\r//’ 原文件 >转换后文件 ;
2. sed 命令的参数中 ”代表决定引用参数,不允许参数中的值让shell解释,s代表替换 /后面跟的是被替换的内容,后面的//代表替换后的内容为空 ;
3. 推荐使用EditPlus或者UltraEdit,使用这些文本编辑工具,在保存时,可以选择保存的文字编码类型,比如选择UNIX格式换行符;
4. 我比较喜欢EditPlus的join lines功能,把多行的值变成一个逻辑行,便于写到shell脚本中作为循环的变量。