日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

c语言每轮for循环初始化i,十三.Linux博客-2016年8月18日while、for特殊用法、selet循环与菜单、函数...

發布時間:2024/7/23 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言每轮for循环初始化i,十三.Linux博客-2016年8月18日while、for特殊用法、selet循环与菜单、函数... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

格式說明:

操作

概念

命令

說明及舉例

十三.while、for特殊用法、selet循環與菜單、函數

while特殊用法

while循環的特殊用法(遍歷文件的每一行):

while?read?line;?do

循環體

done?

依次讀取/PATH/FROM/SOMEFILE文件中的每一行,且將行賦值給變量line

練習

掃描/etc/passwd文件每一行,如發現GECOS字段為空,則填充用戶名和單位電話為62985600,并提示該用戶的GECOS信息修改成功。

以wang用戶身份登陸并傳送文件到wang的家目錄

for特殊用法

雙小括號方法,即((…))格式,也可以用于算術運算 雙小括號方法也可以使bash Shell實現C語言風格的變量操作

\#I=10

\#((I++))

for循環的特殊格式:

for?((控制變量初始化;條件判斷表達式;控制變量的修正表達式))

do

循環體

done

控制變量初始化:僅在運行到循環代碼段時執行一次

控制變量的修正表達式:每輪循環結束會先進行控制變量修正運算,而后再做條件判斷

練習

打印9*9

selet 循環與菜單

select?variable?in?list

do

循環體命令

done

select 循環主要用于創建菜單,按數字順序排列的菜單項將顯示在標準錯誤上,并顯示PS3 提示符,等待用戶輸入

用戶輸入菜單列表中的某個數字,執行相應的命令 用戶輸入被保存在內置變量REPLY 中。

select 是個無限循環,因此要記住用break 命令退出循環,或用exit 命令終止腳本。也可以按ctrl+c 退出循環。

select 經常和case 聯合使用

與for 循環類似,可以省略in list ,此時使用位置參量

舉例: (PS3=""定義selet命令提示符)

函數

函數function是由若干條shell命令組成的語句塊,實現代碼重用和模塊化編程。

它與shell程序形式上是相似的,不同的是它不是一個單獨的進程,不能獨立運行,而是shell程序的一部分。

函數和shell程序比較相似,區別在于:

– Shell程序在子Shell中運行

– 而Shell函數在當前Shell中運行。因此在當前Shell中,函數可以對shell中變量進行修改

定義函數

語法一:

function?f_name{

...函數體...

}

語法二:

function?f_name(){

...函數體...

}

語法三:

f_name(){

...函數體...

}

函數使用

函數的定義和使用:

可在交互式環境下定義函數

可將函數放在腳本文件中作為它的一部分

可放在只包含函數的單獨文件中

調用:函數只有被調用才會執行;

調用:給定函數名

函數名出現的地方,會被自動替換為函數代碼

函數的生命周期:被調用時創建,返回時終止

unset?+函數名??刪除函數

函數的優先級比別名高

函數在使用前必須定義,因此應將函數定義放在腳本開始部分,直至shell首次發現它后才能使用

調用函數僅使用其函數名即可。

.示例:

$cat?func1

\#!/bin/bash

\#?func1

hello()

{

echo?"Hello?there?today's?date?is?`date?+%F`"

}

echo?"now?going?to?the?function?hello"

hello

echo?"back?from?the?function"

可以將經常使用的函數存入函數文件,然后將函數文件載入shell。

文件名可任意選取,但最好與相關任務有某種聯系。

例如:functions.main

一旦函數文件載入shell,就可以在命令行或腳本中調用函數。

可以使用set命令查看所有定義的函數,其輸出列表包括已經載入shell的所有函數。

若要改動函數,首先用unset命令從shell中刪除函數。改動完畢后,再重新載入此文件。

函數文件示例:

$cat?functions.main

\#!/bin/bash

\#functions.main

findit()

{

if?[?$#?-lt?1?]?;?then

echo?"Usage:findit?file"

return?1

fi

find?/?-name?$1?–print

}

載入函數

函數文件已創建好后,要將它載入shell

定位函數文件并載入shell的格式:

filename 或source filename

注意:此即

這里的文件名要帶正確路徑

示例:上例中的函數,可使用如下命令:

$?.?functions.main

函數變量

變量作用域:

環境變量:當前shell和子shell有效

本地變量:只在當前shell進程有效,為執行腳本會啟動專用子shell進程;因此,本地變量的作用范圍是當前shell腳本程序文件,包括腳本中的函數。

局部變量:函數的生命周期;函數結束時變量被自動銷毀

注意:如果函數中有局部變量,如果其名稱同本地變量,使用局部變量。

在函數中定義局部變量的方法(此變量只作用于函數體本身)

local?NAME=VALUE

函數返回值

函數有兩種返回值:

函數的執行結果返回值:

(1) 使用echo或printf命令進行輸出

(2) 函數體中調用命令的輸出結果

函數的退出狀態碼:

(1) 默認取決于函數中執行的最后一條命令的退出狀態碼

(2) 自定義退出狀態碼,其格式為:

return 從函數中返回,用最后狀態命令決定返回值

return 0 無錯誤返回。

return 1-255 有錯誤返回

函數遞歸實例

函數遞歸:

函數直接或間接調用自身

注意遞歸層數

遞歸實例:

階乘是基斯頓·卡曼于1808 年發明的運算符號,是數學術語

一個正整數的階乘(factorial)是所有小于及等于該數的正整數的積,并且有0的階乘為1。自然數n的階乘寫作n!。

n!=1×2×3×…×n。

階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。

n!=n(n-1)(n-2)…1

n(n-1)! = n(n-1)(n-2)!

示例:fact.sh

#!/bin/bash

#

fact()?{

if?[?$1?-eq?0?-o?$1?-eq?1?];?then

echo?1

else

echo?$[$1*$(fact?$[$1-1])]

fi

}

fact?$1

練習

5.斐波那契數列又稱黃金分割數列,因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……,斐波納契數列以如下被以遞歸的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2) 寫一個函數,求n階斐波那契數列

6.漢諾塔

原創文章,作者:自己泡面,如若轉載,請注明出處:http://www.178linux.com/39205

總結

以上是生活随笔為你收集整理的c语言每轮for循环初始化i,十三.Linux博客-2016年8月18日while、for特殊用法、selet循环与菜单、函数...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。