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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell函数与数组(了解函数,递归函数运用,了解数组,创建基数和偶数数组,冒泡排序,调试命令)

發布時間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell函数与数组(了解函数,递归函数运用,了解数组,创建基数和偶数数组,冒泡排序,调试命令) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • shell函數
    • 了解函數
    • 函數定義
    • 遞歸函數
    • 舉例子
    • shell數組
    • 定義數組
  • 數組包括的數據類型與數組操作
    • 數組操作
    • 舉例(快速創建數組、奇數數組)
    • 冒泡排序法
    • 調試命令
    • set命令
    • bash/sh

shell函數

了解函數

1、在編寫shell腳本程序時,將一些需要重復使用的命令操作,定義為公共使用的語句塊,既可以成為函數

2、合理使用shell函數,可以使腳本更加簡潔,增強程序的易讀性,提高執行效率

函數定義

  • return返回的是狀態碼,需要使用$?調取
  • echo 返回的是值,使用變量調用
函數 #!/bin/bash function xue(){read -p "請輸入第一個整數" naread -p "請輸入第二個整數" nbname=$[$na+$nb] echo $name return 100 返回狀態碼 } number=`xue` 賦予namber值 echo $? 顯示狀態碼 echo $number 顯示出值多少 root@192 ~]# sh c.sh 輸入你的一個整數10 輸入你的二個整數20 100 和:30 [root@192 ~]# echo $? 0

全局聲明函數

如果你希望直接從終端調用函數,可以將函數定義在主目錄下的 .profile 文件,這樣每次登錄后,在命令提示符后面輸入函數名字就可以立即調用

#!/bin/bash function xue(){read -p "請輸入第一個整數" naread -p "請輸入第二個整數" nbname=$[$na+$nb]echo $namereturn 100 } [root@localhost ~]# vim .bashrc (局部聲明) [root@localhost ~]# source .bashrc (更新) [root@192 ~]# xue 請輸入第一個整數1 請輸入第二個整數2 3

遞歸函數

遞歸就是程序不斷調用自身,遞歸方法就是方法直接或間接調用自身的方法。自己調用自己

舉例子

列舉出/var/log/下所有的文件,使用層次性輸出。

#!/bin/bashfunction list_files(){for f in ` ls $i`doif [ -d "$1/$f" ];thenecho "$2$f "list_files "$1/$f"" $2 "elseecho "$2$f"fidone } list_files "/var/log" "" [root@192 ~]# sh acd.txt 1.sh 2 2.txt 3 abn.sh acd.txt a.txt backup b.sh c.sh e.txt httpd-2.4.25.tar.gz ls.txr opt.zhang o.txt 公共 模板 視頻 圖片 文檔 下載 音樂 桌面

shell數組

數組就是把有限個元素變量或數組用一個名字命名,然后用編號區分他們的變量的集合。這個名字成為數組名,編號成為數組下標。組成數組的各個變量成為數組的分量,也稱為數組的元素,有時也稱為下標變量。

  • 獲取數組長度
  • 使用for循環獲取具體信息,使用下標或索引標記數組中數據的位置
  • 可以存放多種數據,如:整型,長整形,浮點型(單精度,雙精度),字符串等
  • 獲取元素長度
  • 遍歷元素
  • 元素切片
  • 元素替換
  • 元素刪除
  • 數組下標從0開始算
  • 數組長度從1開始算
  • 定義數組

    方法1

    基本格式log 數組名=(log0 log1 log2...) 例如 ABC=(11 22 33 44) [root@promote ~]# zhang=(11 22 33 44 55 ) [root@promote ~]# echo $zhang 11 [root@promote ~]# echo ${zhang[*]} 11 22 33 44 55 [root@promote ~]# echo ${zhang[@]} 11 22 33 44 55

    方法2

    基本格式 數組名=([0]=value [1]=value [2]=value...) [root@promote ~]# wan=([0]=33 [1]=44 [2]=55 [3]=66 ) [root@promote ~]# echo ${wan[@]} 33 44 55 66 [root@promote ~]# echo ${wan[*]} 33 44 55 66

    方法3:數組元素之間使用空格隔開

    基本格式 列表名=“value0 value1 value2” 數組名=($列表名) [root@localhost ~]# list="11 22 33 44 " [root@localhost ~]# num=($list ) [root@localhost ~]# echo ${num[*] } 11 22 33 44

    方法4:

    基本格式 數組名[0]=“value” 數組名[1]=“value” 數組名[2]=“value” 例如 AAA[0]=“11” AAA[1]=“22” AAA[2]=“33” ...

    替換數組元素

    [root@localhost ~]# zhang=( 11 22 33 44 55 66 ) [root@localhost ~]# echo ${zhang[*]} 11 22 33 44 55 66 [root@localhost ~]# zhang[1]=88 [root@localhost ~]# echo ${zhang[*]} 11 88 33 44 55 66

    數組包括的數據類型與數組操作

    數組只可存放數值或字符

    下標從0開始

    數組操作

    獲取數組長度 [root@localhost ~]# A=( a b c d e) [root@localhost ~]# echo ${A[*] } a b c d e [root@localhost ~]# echo ${#A[*] } 5

    舉例(快速創建數組、奇數數組)

    列出1-100的數,并將1-100和1-100的奇數定義為數組

    !/bin/bashfor ((i=1;i<=99;i++));doarr[$i]=$i done echo echo ${arr[*]} [root@localhost ~]# sh 49.txt.sh 1 2 3 4 5 6 7 8 9 10 11 12 13

    快速創建一個數組,元素由用戶自己定義

    #!/bin/bash i=0 while true doread -p "是否存入元素(yes/no) " doingif [ $doing == "no" ];thenbreakfiread -p "請存入第$[$i+i]個元素 :" keyarr[$i]=$keylet i++done echo ${arr[*]} ~ [root@localhost ~]# sh 57.txt.sh 是否存入元素(yes/no) yes 請存入第0個元素 :10 是否存入元素(yes/no) yes 請存入第2個元素 :20 是否存入元素(yes/no) yes 請存入第4個元素 :30 是否存入元素(yes/no) yes 請存入第6個元素 :40 是否存入元素(yes/no) no 10 20 30 40

    讓70 56 45 90 80 分沒到60的變成60

    #!/bin/bash zhang=(70 56 45 90 80 )for ((i=0;i<${#zhang[*]};i++));do if [ ${zhang[$i]} -lt 60 ];thennew[$i]=60 elsenew[$i]=${zhang[$i]} fi done echo ${new[*]} [root@192 ~]# sh acsd.txt 70 60 60 90 80

    #遍歷數組,對未滿60的元素直接刪除

    [root@localhost opt]# vim arr4.sh #!/bin/bash score=(12 90 80 99 43 60 90 4 5 7 8 4 3 4) i=0 for f in ${score[*]} doif [ $f -lt 60 ];thenunset score[$i]filet i++ done echo ${score[*]} [root@localhost opt]# sh arr4.sh 90 80 99 60 90

    冒泡排序法

    示意圖

    外層是輪內層是次

    然后要交換兩個瓶子中的水,必須找一個空瓶子作為媒介,根據一定的條件就可以換過來。

    步驟過程

    對比 前面下標 大于 后面下標 要放到后面

    小的下標 賦予空瓶子

    小的下標空了,把大的賦予小的

    大的空了 瓶子里的小下標賦予到大的里面

    [root@localhost opt]# vim arr3.sh #!/bin/bash #快速創建一個數組 for ((i=0;i>=0;i++)) doread -p "請輸入你需要定義數組元素:" num #如果輸入空字符,那么退出本次循環if [ -z $num ];thenbreak #否則把輸入的數字賦值給數組元素elsearr[$i]=$numfi done echo "你的數組是:${arr[*]}"#定義數組前一個元素 for ((i=0;i<${#arr[*]};i++)) do#定義數組后一個元素for ((a=$i+1;a<${#arr[*]};a++))do #條件判斷,如果前一個元素大于后一個元素,就交換位置,否則下一次循環if [ ${arr[$i]} -gt ${arr[$a]} ];then #交換位置temp=${arr[$i]}arr[$i]=${arr[$a]}arr[$a]=$temp #fidone done echo "你的數組升序排列為:${arr[*]}" [root@localhost opt]# sh arr3.sh 請輸入你需要定義數組元素:45 請輸入你需要定義數組元素:1 請輸入你需要定義數組元素:32 請輸入你需要定義數組元素:55 請輸入你需要定義數組元素:4 請輸入你需要定義數組元素: 你的數組是:45 1 32 55 4 你的數組升序排列為:1 4 32 45 55

    調試命令

    set命令

    set -x:開啟調節模式
    set +x:關閉調節模式

    • [root@localhost opt]# vim arr4.sh #!/bin/bash #遍歷數組,對未滿60的元素直接刪除 score=(12 90 43 60 90 4 4) i=0 for f in ${score[*]} do set -xif [ $f -lt 60 ];thenunset score[$i]fi set +xlet i++ done echo ${score[*]} [root@localhost opt]# sh arr4.sh + '[' 12 -lt 60 ']' + unset 'score[0]' + set +x + '[' 90 -lt 60 ']' + set +x + '[' 43 -lt 60 ']' + unset 'score[2]' + set +x + '[' 60 -lt 60 ']' + set +x + '[' 90 -lt 60 ']' + set +x + '[' 4 -lt 60 ']' + unset 'score[5]' + set +x + '[' 4 -lt 60 ']' + unset 'score[6]' + set +x90 60 90

    bash/sh

    選項: -n:顯示腳本錯誤 -v:顯示腳本信息 -x:表示跟蹤腳本 [root@localhost opt]# sh -x arr1.sh arr1.sh:行5: 未預期的符號 `arr1[$i]=$[$i+1]' 附近有語法錯誤 arr1.sh:行5: `arr1[$i]=$[$i+1]'

    總結

    以上是生活随笔為你收集整理的shell函数与数组(了解函数,递归函数运用,了解数组,创建基数和偶数数组,冒泡排序,调试命令)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 日韩人妻精品一区二区三区 | 波兰性xxxxx极品hd | 91在线中文字幕 | 91av导航| 艳妇乳肉豪妇荡乳av无码福利 | 日韩h在线 | 五月天综合在线 | 最新在线中文字幕 | 偷拍一区二区三区 | 无码 制服 丝袜 国产 另类 | 日韩成人免费电影 | 女人扒开屁股让男人捅 | 亚洲精品 日韩无码 | 免费在线观看日韩av | 毛片入口| 欧美日韩一区二 | 日韩av二区 | 草在线 | 99这里只有 | 无人码人妻一区二区三区免费 | 精品欧美一区二区三区久久久 | 色就是色欧美色图 | 国产日韩视频在线观看 | 男男做爰猛烈叫床爽爽小说 | 自拍欧美日韩 | 福利姬在线观看 | 少女与动物高清版在线观看 | 日本在线www | 岳奶大又白下面又肥又黑水多 | 国内自拍网站 | 国产精品国产三级国产在线观看 | 91大片在线观看 | 国产影音先锋 | 久热精品在线视频 | 91视频最新地址 | 777色婷婷| 一本加勒比北条麻妃 | 男女免费毛片 | 亚洲男女在线 | 黄色av网站免费观看 | 国产麻豆91视频 | 久久综合丁香 | 欧美精品一区二区三区四区五区 | 日韩国产欧美视频 | 中文字幕日韩一区二区三区不卡 | 一区二区三区蜜桃 | 超碰日日夜夜 | 日韩性生活视频 | 高清无码视频直接看 | 日韩有码一区二区三区 | 狼人综合视频 | 日本在线网站 | 很黄的性视频 | 亚洲国产日韩a在线播放性色 | 亚洲欧美中文日韩在线v日本 | 欧美激情一区二区视频 | 婷婷色中文 | 91黄免费| 国产传媒在线 | 久草福利资源 | 开元在线观看视频国语 | 97爱爱爱| 欧美大片在线看免费观看 | 日韩精品av一区二区三区 | 538任你躁在线精品免费 | 亚洲精品美女久久久 | 人妻洗澡被强公日日澡 | va视频在线观看 | 色婷婷综合久久久中文字幕 | 老司机午夜福利视频 | 久操国产在线 | 国产精品久久久久久久久毛片 | 久久久久久久久久久久国产精品 | 日韩少妇高潮抽搐 | 91日韩中文字幕 | 午夜精品av | 成人免费入口 | 黑人巨大精品欧美 | 国产精品久久影院 | 日本特黄一级 | 超碰神马 | 欧美18一20男同69gay | 国产精品免费久久久 | 日韩av在线一区二区三区 | 国产欧美一区二区三区在线看蜜臂 | 妓院一钑片免看黄大片 | 男人桶女人桶爽30分钟 | 2019中文字幕在线观看 | 狠狠cao日日穞夜夜穞av | 色亚洲欧美 | 欧美日韩少妇 | 久草视频在线免费看 | 粉嫩av一区二区三区免费观看 | 国产亚洲成av人片在线观看桃 | 日本少妇性生活 | 国产精品免费看 | 一区二区成人在线观看 | 99爱爱视频| 欧美自拍偷拍一区二区 |