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腳本中作為循環的變數。