當前位置:首頁 » 網頁前端 » shell腳本for循環賦值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

shell腳本for循環賦值

發布時間: 2023-03-31 19:31:32

A. shell裡面的for循環

關於shell中的for循環用法很多,一直想總結一下,今天網上看拿飢到上一篇關於for循環用法的總
結,感覺很全面,所以就轉過來研究研究,嘿嘿...
1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
2、在shell中常用的是 for i in $(seq 10)
3、for i in `ls`
4、for i in ${arr[@]}
5、for i in $* ; do
6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
7、for i in f1 f2 f3 ;do
8、for i in *.txt
9、for i in $(ls *.txt)
for in語句與` `和$( )合用,利用` `或$( )的將多行合為一行的缺陷,實際是合為一個字元串
數組
============ -_- ==============for num in $(seq 1 100)
10、LIST="rootfs usr data data2"
for d in $LIST; do
用for in語句自動對字元串按空格遍歷的特性,對多個目錄遍歷
11、for i in {1..10}
12、for i in stringchar {1..10}
13、awk 'BEGIN{for(i=1; i<=10; i++) print i}'
注意:AWK中的for循環寫法和C語言一樣的
===============================================================
01.#/bin/bash
02.# author: 周海漢
03.# date :2010.3.25
04.# blog.csdn.net/ablo_zhou
05.arr=("a" "b" "c")
06.echo "arr is (${arr[@]})"
07.echo "item in array:"
08.for i in ${arr[@]}
09.do
10. echo "$i"
11.done
12.echo "參數,\$*表示腳本輸入的所有參數:"
13.for i in $* ; do
14.echo $i
15.done
16.echo
17.echo '處理文件 /proc/sys/net/ipv4/conf/*/accept_redirects:'
18.for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
19.echo $File
20.done
21.echo "直接指定循環內容"
22.for i in f1 f2 f3 ;do
23.echo $i
24.done
25.echo
26.echo "C 語法譽吵for 循環:"
27.for (( i=0; i<10; i++)); do
28.echo $i
29.done
-----------------------------------------------------------------------------------
----------------------
shell中for循環用法
shell語法好麻煩的,一個循環都弄了一會 ,找了消虛返幾個不同的方法來實現輸出1-100間可以被3
整除的數
1.用(())
#!/bin/bash
clear
for((i=1;i<100;i++))
for
do
if((i%3==0))
then
echo $i
continue
fi
done
2.使用`seq 100`
#!/bin/bash
clear
for i in `seq 100`
do
if((i%3==0))
then
echo $i
continue
fi
done
3.使用while
#!/bin/bash
clear
i=1
while(($i<100))
do
if(($i%3==0))
then
echo $i
fi
i=$(($i+1))
done
-----------------------------------------------------------------------------------
---------------------
在shell用for循環做數字遞增的時候發現問題,特列出shell下for循環的幾種方法:
1.
for i in `seq 1 1000000`;do
echo $i
done
用seq 1 10000000做遞增,之前用這種方法的時候沒遇到問題,因為之前的i根本就沒用到百萬
(1000000),因為項目需要我這個數字遠大於百萬,發現用seq 數值到 1000000時轉換為1e+06,根
本無法作為數字進行其他運算,或者將$i有效、正確的取用,遂求其他方法解決,如下
2.
for((i=1;i<10000000;i++));do
echo $i
done
3.
i=1
while(($i<10000000));do
echo $i
i=`expr $i + 1`
done
因為本方法調用expr故運行速度會比第1,第2種慢不少不過可稍作改進,將i=`expr $i + 1`改
為i=$(($i+1))即可稍作速度的提升,不過具體得看相應shell環境是否支持
4.
for i in {1..10000000;do
echo $i
done
其實選用哪種方法具體還是得由相應的shell環境的支持,達到預期的效果,再考慮速度方面的
問題。

B. Linux shell for 循環和雙層循環

Shell 腳本一直以來不是很入門,很多時候就是用到再查,發現自己有幾個重復用比較高的點,還是記姿臘族錄一下,至少查的時候能少費點功夫~~

(1)列表for循環

Shell支持使用略寫的計數方式,如{1..10},表示跡弊1到10的整數數字;
Shell還支持安規定的步數進行跳躍的方式實現列表for循環,例如計算1~100之內所有奇數的和。

i 按照2的增量增長,一直到增長到100。局埋即實現100內奇數加和。還可以使用seq命令實現按2遞增來計算1..100內的所有奇數之和。 for i in $(seq 1 2 100) ,seq 表示起始值為1,增量為2,結束條件值為100。

for循環除了數字列表,還可以生成字元串列表,如列出當前文件夾下的所有文件:

還可以傳遞命令行參數

$#表示傳遞的參數的個數;$@表示參數的列表。

(2) 類C風格的for循環
也稱之為計次循環。 切記使用的是雙括弧。

上面的計算100以內奇數的和可以使用類C的for循環實現

通過for循環實現九九乘法表

C. 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的過程中的一部分總結,和大家共享。同時,也參考了其他人的博客,在參考列表中列出來了。

D. shell for循環讀文件,拼接字元串賦值給變數

OPTS="$(cat opt/aaa.ini) "
只需隱毀要這樣就是讀取所有數據族埋放灶穗備到OPTS

E. shell通過for循環連續賦值

for (( i=1 ; i <純頌= 3 ; i++ ));do eval account$i=`echo $account |cut -d ' '運褲沒旁納 -f$i` ; done

F. shell中數組怎麼循環賦值,急

Bash環境可以這樣。

#!/bin/bash

for ((i=1;i<=100;i++))

do

name[$i]=$i

echo ${name[$i]} #為方便檢查,加了列印

done

通用頃沒點的(符合POSIX標准)可以這樣:

#!/bin/sh

declare -a name

for i in `seq 100`

do

name[$i]=$i

echo ${name[$i]} #為和乎緩方便檢查,加了列印

done

G. shell中使用for循環對變數賦值出現問題!!!

#!/bin/尺碧bash
for((j=1;j<=5;j++))
do
m=$[80*$j]
echo $m
done
如陵茄舉此納碼,即可

H. 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

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

J. Shell腳本for循環逐行原樣輸出

我在寫Shell腳本時遇到了這樣一個問題。
需求冊逗顫指慧:從文件中逐行遍歷然後輸出。

誒?
為什麼州敗和我源文件的行數不一致呢?

後來查資料發現:
bash shell會將下列字元當作欄位分隔符:空格、製表符、換行符
如果我們想忽略掉這些分隔符,需要設IFS的變數值。
在for循環前加上這個IFS賦值操作就可以了

看,現在輸出的結果和我們txt文件中的格式是一樣的了。
但是這樣賦值會有問題,如果腳本中其他方法也用到了for循環,可能影響其他for循環的輸出結果,那我們可以用這種方式給IFS賦值