shell腳本循環跳出
⑴ 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腳本中作為循環的變數。
⑵ shell while 為何不跳出循環
do語句要提前一行。
while循環用於不斷執行一系列命令,也用於從輸入文件中讀取數據;命令通常為測試條件。其格式為:while command
do
Statement(s) to be executed if command is true
done
命令執行完畢,控制返回循環頂部,從頭開始直至測試條件。
⑶ shell腳本的常用循環
在簡單介紹shell腳本(shell script)之前,先簡單介紹一下shell。
在計算機科學中, shell (殼層)指「為用戶提供用戶界面」的軟體,通常指的是命令行界面的解析器。一般來說,這個詞是指操作系統中,提供訪問內核所提供之服務的程序。Shell也用於泛指所有為用戶提供操作界面的程序,也就是程序和用戶交互的介面。因此與之相對的是程序內核(英語:Kernel),內核不提供和用戶的交互功能。
不過這個詞也拿來指應用軟體,或是任何在特定組件外圍的軟體,例如瀏覽器或電子郵件軟體是HTML排版引擎的shell。Shell這個詞是來自於操作系統(內核)與用戶界面的外層界面。
通常將shell分為兩類:命令行與圖形界面。命令行殼層提供一個命令行界面(CLI);而圖形殼層提供一個圖形用戶界面(GUI)。
shell腳本 (英語:shell script),又稱shell命令稿、程序化腳本,是一種電腦程序與文本文件,內容由一連串的shell命令組成,經由Unix Shell直譯其內容後運作。被當成是一種腳本語言來設計,其運作方式與解釋型語言相當,由Unix shell扮演命令行解釋器的角色,在讀取shell腳本之後,依序運行其中的shell命令,之後輸出結果。利用shell腳本可以進行系統管理,文件操作等。
在Unix及所有的類Unix系統中,如Linux、FreeBSD等操作系統,都存在shell腳本。依照Unix shell的各種不同類型,shell腳本也有各種不同方言,如 Bourne shell (sh), Bourne-Again shell (bash), C shell (csh)等等。在DOS、OS/2、Microsoft Windows中的批處理文件,跟shell腳本有類似的功能。
常見的shell腳本循環語法包括for、while和until。除此之外,還有一些其他語法,能夠實現循環(遍歷)功能。和循環相關的還有循環控制符break和continue,用於控制流程轉向。
for循環屬於「當型循環」,即「當滿足條件的時候執行」。
for循環有三種類型:
常見的數值for循環語法還有:
for file in $( ls )語法的等效語法有很多,如下:
或者
類C風格的for循環,和C沒有太大的區別,這里只進行示例,不再贅述。
或者
結果:
也稱為前測試循環語句,重復次數是利用一個條件來控制是否繼續重復執行這個語句。為了避免死循環,必須保證循環體中包含循環出口條件即表達式存在退出狀態為非0的情況。例如,計算1~100以內所有的奇數之和:
當然,條件可以使字元串,可以是輸入值,可以是標記等,此處不再贅述。
until命令和while命令類似,while能實現的功能until也可以實現。但區別是until循環的退出狀態是為0(與while剛好相反),即whie循環在條件為真時繼續執行循環,而until則在條件為假時執行循環。
例如,計算1~100以內所有的奇數之和:
select結構從技術角度看不能算是循環結構,只是相似而已,它是bash的擴展結構用於互動式菜單顯示,功能類似於case結構,但是比case的交互性要好。在遍歷列表功能中,select結構可以實現循環的功能。
例如,以下選擇,只有選擇white的時候,退出循環
在循環語法中,經常需要根據條件控制循環退出或跳過本次執行,這時候就需要用到循環控制符。循環控制符主要包括兩個:break和continue。
循環控制符和C以及Java等常見語法功能類似,在理不再贅述,只給出常用示例。
在for、while和until循環中break可強行退出循環。
注意 :break語句僅能退出當前的循環,如果是兩層循環嵌套,則需要在外層循環中使用break。
例如,計算1~100以內所有的奇數之和:
在for、while和until中用於讓腳本跳過其後面的語句,執行下一次循環。
例如,顯示10以內能被3整除的正整數。
以上是自己在學習Linux的過程中的一部分總結,和大家共享。同時,也參考了其他人的博客,在參考列表中列出來了。
⑷ shell腳本if循環問題
剛看到,這么寫可以實現,代碼在linux上測過了:
#!/bin/bash
arr=(10 11 30)
for a in ${arr[*]}
do
ouput_s=$((ouput_s+a))
sum=$((sum+1))
done
echo "$ouput_s"
echo "$sum"
輸出:
51
3
⑸ shell腳本如何實現把IP組里的ip逐個輸出,並循環完成指定任務
#!/bin/bash
host=192.168.1.1,192.168.1.2,192.168.1.3
array=(`echo $host|tr ',' ' '`)
for ip in ${array[@]};do
scp XXX root@$ip:~
ssh root@$ip << ressh
執行命令
exit
ressh
done
⑹ linux shell腳本:while循環中調用另一個腳本遇到exit為什麼會跳出循環,且繼續執行循環後的程序
exit是在被調用的腳本裡面,肯定會退出被調用的腳本了。如果不想繼續執行while循環後面的程序可以在do後面的條件上加上break