1. shell無法執行for循環多行命令
默認的情況下,Shell腳本中的命令是串列執行的,必須等到前一條命令執行完後才執行接下來的命令。shell循環中指令正常使用也是串列的,不過可以使用後台並行執行命令的方法實現並行操作;
例如:
(1)、串列實例:
#!/bin/bash
for((
i
=
0;
i
<
${count};
i++
))
do
echo
commands1
done
(2)、並行實例:
#!/bin/bash
for((
i
=
0;
i
<
${count};
i++
))
do
{
echo
commands1
}&
done
實質就是將操作指令作為後台進程在執行,這樣主進程就不用等待前面的命令執行完畢之後才開始執行接下來的命令,實現並行的效果;自己領會咯。
2. shell腳本中除了用for循環還可以用什麼循環
While 和 Until循環,例如:
while((i<=100))
do
let"sum+=i"
let"i+=2"
done
until[["$i"-gt5]]#大於5
do
let"square=i*i"
echo"$i*$i=$square"
let"i++"
done
3. linux遠程登陸的shell腳本for循環無結果
我比較認同「ssh之後是遠程主機執行的命令
本地變數不起作用」這種說法
你的腳本之所以$aaa能回顯,是因為在本地定義了這個變數,但本地沒有定義$i這個變數,所以無法顯示變數值,把aaa="u1 u2"一塊塞<<ff.......ff這個內聯重定向數據中去。再試試看。
4. 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腳本中作為循環的變數。
5. 用for循環編寫刪除文件的shell腳本
#!/bin/bash
#2.sh
cd #進入加目錄
touch 1 #創建文件1
read -p "請輸入要刪除的文件 1 :" file
if [ "$file" != "1" ];then
echo "請輸入1 不許輸入別的。謝謝!"
fi
for i in $file ;do #用for循環把$file代入$i
rm -rf $i #刪除$i
echo "$i 被刪除了。"
done #結束
6. 編寫一個shell程序,實現用for循環輸出1到20間的奇數
#!/bin/sh
for ((i=1;i<20;i=i+2));
do
echo $i
done
類似於DOS下的command.com和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序。
命令行式shell(Command Line Interface shell ,即CLI shell)
例如:
bash / sh / ksh / csh / zsh(Unix/linux 系統)
(6)shell不用for循環編程腳本擴展閱讀:
傳統意義上的shell指的是命令行式的shell,以後如果不特別註明,shell是指命令行式的shell。
文字操作系統與外部最主要的介面就叫做shell。shell是操作系統最外面的一層。shell管理與操作系統之間的交互:等待輸入,向操作系統解釋你的輸入,並且處理各種各樣的操作系統的輸出結果。
shell提供了與操作系統之間通訊的方式。這種通訊可以以交互方式,或者以shell script方式執行。shell script是放在文件中的一串shell和操作系統命令,它們可以被重復使用。本質上,shell script是命令行命令簡單的組合到一個文件裡面。
7. Linux shell編程 ---- 循環結構
linux
shell編程
----
循環結構1
for循環
1
for循環是linux
Shell中常用的結構,for循環有三種結構;一種是列表for循環,第二種是不帶列表的for循環,第三種是類C風格的for循環。
2
列表for循環
for
variable
in
list
do
statement
done
3
不帶列表for循環
for
variable
do
statement
done
4
類C風格的for循環
for
((
expr1;
expr2;
expr3
))
do
statement
done2
while循環
1
while循環的結構
while
expression
do
statement
done
3
until循環
1
在執行while循環的時候只要expression的退出狀態為0,將一直執行循環體。until命令和while命令類似,但區別是until循環中的expression的退出狀態不為0的時候循環體將會一直執行。
2
until的結構
untile
expression
do
statement
done
4
循環控制符號
1
break語句可以應用在for,while和until循環語句中,用於強行循環,也就是忽略循環體中任何其它語句和循環條件的限制。
2
continue循環控制符應用在for,while和until語句中,用於讓腳本跳過後面的語句,執行下一次的循環。
8. shell編程中的for循環如何實現
運行報錯嗎
add_all_subscriber()
{
file=subscriber.txt
for i in `seq 100`; do
SubscriberId = 0
a = $(($SubscriberId + $i))
add_one_subscriber $a
sed -e 's/Id/$a/' subscriber.txt >> subscriber_update.txt
done
mv subscriber.txt subscriber_update.txt
rm -rf subscriber.txt
mv subscriber_update.txt subscriber.txt
else
echo "completed"
fi
}
改成下面的內容試下
9. 如何編寫該shell腳本
#!/bin/sh
sum=0
for i in $*
do
sum=$[sum+i]
done
echo $sum
10. 請教關於shell腳本循環的問題
就是死循環唄:
while :
do
函數
done
這樣就可以啊
另外不同的shell支持的for循環的寫法可能不盡相同,還可以這么寫循環:
#!/bin/sh
str="1 2 3 4 5 6"
for i in $str; do
echo ${i}
done
你可以試一下