中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Linux進(jìn)階

本章概要:循環(huán)控制(for/while/until/select)、函數(shù)、數(shù)組、declare、eval、expect等。

本意內(nèi)容

  • 循環(huán)控制
    • for
    • while
    • until
    • select
    • continue、break、shift
  • 函數(shù)
    • 定義函數(shù)
    • 函數(shù)返回值(return)
    • 函數(shù)文件
  • 信號(hào)捕捉trap
  • 數(shù)組
  • 字符串切片
    • 基于模式取子串(# → ,% ←)
      • 1. 搜索刪除
      • 2. 查找替換
      • 3. 查找并刪除
      • 4. 字符大小寫轉(zhuǎn)換
  • 高級(jí)變量用法-有類型變量
    • declare [選項(xiàng)] 變量名
    • eval
    • 間接變量引用
    • 命令:mktemp
    • 命令:install
    • expect
  • 練習(xí):

循環(huán)控制

for

  • for格式
#格式1
for 變量名 in 列表 ; do
       循環(huán)體
done

#格式2
for ((i=1;i<j;i++))
do
       循環(huán)體
done
  • 列表生成方式
    1. 直接給出
    2. 整數(shù)列表{1..100[..步進(jìn)]}、$(seq [start [stop]] end)
    3. 變量引用$@、$*

while

  • 當(dāng)CONDITION為真時(shí)。循環(huán)
#當(dāng)CONDITION為真時(shí)。循環(huán)
while CONDITION ; do
       循環(huán)體
done

#無限循環(huán)
while :
do
       statement
done
  • 遍歷文件的每一行,賦值給line
while read line ; do
       statement
done < /path/file

until

直到CONDITION為真時(shí)。退出循環(huán)

#直到CONDITION為真時(shí)。退出循環(huán)
until CONDITION ; do
       循環(huán)體
done

select

  1. 循環(huán)主要用于創(chuàng)建菜單,顯示 PS3 提示符,等待用戶輸入
  2. 用戶輸入被保存在內(nèi)置變量 REPLY 中
  3. select 是個(gè)無限循環(huán),用 break退出循環(huán),或用 exit 命令終止腳本。
select var in list
do
       statement 
done

continue、break、shift

  • N層循環(huán)是指循環(huán)嵌套的層
    continue [N]:提前結(jié)束第N層的本輪循環(huán),而直接進(jìn)入下一輪判斷
    break [N]:提前結(jié)束第N層循環(huán),最內(nèi)層為第1層

  • 參量列表是指:腳本輸入的參數(shù)
    shift [N]:用于將參量列表 list 左移指定次數(shù),缺省為左移一次

  • 示例

[root.CentOS 7] ? cat break.sh
while [ $# -gt 0 ] # or (( $# > 0 ))
do
echo $*
shift
done

[root.CentOS 7] ? bash break.sh 1 2 3 45 6 7 8 9 0
1 2 3 45 6 7 8 9 0
2 3 45 6 7 8 9 0
3 45 6 7 8 9 0
45 6 7 8 9 0
6 7 8 9 0
7 8 9 0
8 9 0
9 0
0

函數(shù)

定義函數(shù)

#語法1(推薦)
fname (){
       函數(shù)體
}

#語法2
function fname{
       函數(shù)體
}

#語法3
function fname() {
       函數(shù)體
}

函數(shù)返回值(return)

  1. return 從函數(shù)中返回,用最后狀態(tài)命令決定返回值
  2. return 0 無錯(cuò)誤返回
  3. return 1-255 有錯(cuò)誤返回

函數(shù)文件

  1. 創(chuàng)建函數(shù)文件
> cat function.main
#!/bin/bash
findit(){
       echo hello
}
  1. 載入函數(shù)
. function.main
或
source function.main
  1. 刪除函數(shù)
unset function_name
  1. 環(huán)境函數(shù)
    使子進(jìn)程也可使用
    聲明:export -f function_name
    查看:export -f 或 declare -xf

  2. 函數(shù)參數(shù)
    函數(shù)也可以使用$1,$2,$@,$*,$#
    函數(shù)局部變量:local NAME=VALUE

  3. 函數(shù)遞歸

#!/bin/bash
#
fact() {
if [ $1 -eq 0 -o $1 -eq 1 ]; then
       echo 1
       else
       echo $[$1*$(fact $[$1-1])]
       fi
}
#函數(shù)調(diào)用
fact $1

信號(hào)捕捉trap

信號(hào)可以用'kill -l'查看可用信號(hào)

  • trap '觸發(fā)指令’ 信號(hào)
    進(jìn)程收到系統(tǒng)發(fā)出的指定信號(hào)后,將執(zhí)行自定義指令,而不會(huì)執(zhí)行原操作
  • trap '’ 信號(hào)
    忽略信號(hào)的操作
  • trap '-’ 信號(hào)
    恢復(fù)原信號(hào)的操作
  • trap -p
    列出自定義信號(hào)操作
  • trap finish EXIT
    當(dāng)腳本退出時(shí),執(zhí)行finish函數(shù)
#!/bin/bash
trap 'echo “signal:SIGINT'' int
trap -p
for((i=0;i<=10;i++))
do
sleep 1
echo $i
done
trap '' int
trap -p
for((i=11;i<=20;i++))
do
sleep 1
echo $i
done
trap '-' int
trap -p
for((i=21;i<=30;i++))
do
sleep 1
echo $i
done

數(shù)組

  1. 索引:編號(hào)從0開始,屬于數(shù)值索引
  2. 聲明數(shù)組:
    declare -a ARRAY_NAME
    declare -A ARRAY_NAME 關(guān)聯(lián)數(shù)組
  3. 數(shù)組元素的賦值
    (1) 一次只賦值一個(gè)元素
    ARRAY_NAME[INDEX]=VALUE
    (2) 一次賦值全部元素
    ARRAY_NAME=('VAL1' 'VAL2' 'VAL3' ...)
    (3) 只賦值特定元素
    ARRAY_NAME=([0]='VAL1' [3]='VAL2' ...)
    (4) 交互式數(shù)組值對賦值
    read -a ARRAY
  4. 顯示所有數(shù)組:declare -a
  5. 引用數(shù)組元素
    ${ARRAY_NAME[INDEX]}
    注意:省略[INDEX]表示引用下標(biāo)為0的元素
  6. 引用數(shù)組所有元素
    ${ARRAY_NAME[*]}
    ${ARRAY_NAME[@]}
  7. 數(shù)組的長度(數(shù)組中元素的個(gè)數(shù))
    ${#ARRAY_NAME[*]}
    ${#ARRAY_NAME[@]}
  8. 刪除數(shù)組中的某元素:導(dǎo)致稀疏格式
    unset ARRAY[INDEX]
  9. 刪除整個(gè)數(shù)組
    unset ARRAY
  10. 數(shù)組切片:
    ${ARRAY[@]:offset:number}
    offset 要跳過的元素個(gè)數(shù)
    number 要取出的元素個(gè)數(shù)
    取偏移量之后的所有元素 ${ARRAY[@]:offset}
  11. 向數(shù)組中追加元素:
    ARRAY[${#ARRAY[*]}]=value
  12. 關(guān)聯(lián)數(shù)組:
    declare -A ARRAY_NAME
    ARRAY_NAME=([idx_name1]='val1’ [idx_name2]='val2'…)
    注意:關(guān)聯(lián)數(shù)組必須先聲明再調(diào)用

字符串切片

  1. ${#var}: 返回字符串變量var的長度
  2. ${var:offset}: 返回字符串變量var中從第offset個(gè)字符后(不包括第offset個(gè)字符)的字符開始,到最后的部分,offset的取值在0 到 ${#var}-1 之間(bash4.2后,允許為負(fù)值)
  3. ${var:offset:number}:返回字符串變量var中從第offset個(gè)字符后(不包括第offset個(gè)字符)的字符開始,長度為number的部分
  4. ${var: -length}:取字符串的最右側(cè)幾個(gè)字符
    注意:冒號(hào)后必須有一空白字符
  5. ${var:offset:-length}:從最左側(cè)跳過offset字符,一直向右取到距離最右側(cè)lengh個(gè)字符之前的內(nèi)容
  6. ${var: -length:-offset}:先從最右側(cè)向左取到length個(gè)字符開始,再向右取到距離最右側(cè)offset個(gè)字符之間的內(nèi)容
    注意:-length前空格

基于模式取子串(# → ,% ←)

1. 搜索刪除

  1. ${var#*word}:其中word可以是指定的任意字符
    功能:自左而右,查找var變量所存儲(chǔ)的字符串中,第一次出現(xiàn)的word, 刪除字符串開頭至第一次出現(xiàn)word字符串(含)之間的所有字符
  2. ${var##*word}:同上,貪婪模式,不同的是,刪除的是字符串開頭至最后一次由word指定的字符之間的所有內(nèi)容
  • 示例:
file=“var/log/messages”
${file#*/}: log/messages
${file##*/}: messages
  1. ${var%word*}:其中word可以是指定的任意字符
    功能:自右而左,查找var變量所存儲(chǔ)的字符串中,第一次出現(xiàn)的word, 刪除字符串最后一個(gè)字符向左至第一次出現(xiàn)word字符串(含)之間的所有字符
    file='/var/log/messages'
    ${file%/*}: /var/log
  2. ${var%%word*}:同上,只不過刪除字符串最右側(cè)的字符向左至最后一次出現(xiàn)word字符之間的所有字符
  • 示例:
url=http://www.magedu.com:80
${url##*:} 80
${url%%:*} http

2. 查找替換

  1. ${var/pattern/substr}:查找var,第一次被pattern所匹配,以substr替換之
  2. ${var//pattern/substr}: 查找var,所有能被pattern所匹配,以substr替換之
  3. ${var/#pattern/substr}:查找var,行首被pattern所匹配,以substr替換之
  4. ${var/%pattern/substr}:查找var,行尾被pattern所匹配,以substr替換之

3. 查找并刪除

  1. ${var/pattern} # 刪除var第一次被pattern匹配的
  2. ${var//pattern} # 刪除var所有被pattern匹配的
  3. ${var/#pattern} # 刪除var所有以pattern為行首匹配的
  4. ${var/%pattern} # 刪除var所有以pattern為行尾所匹配的

4. 字符大小寫轉(zhuǎn)換

  1. ${var^^}:把var中的所有小寫字母轉(zhuǎn)換為大寫
  2. ${var,,}:把var中的所有大寫字母轉(zhuǎn)換為小寫
  • 變量賦值
變量配置方式str沒有配置str為空str已配置并非空
var=${str-expr}var=exprvar=var=$str
var=${str:-expr}var=exprvar=exprvar=$str
var=${str+expr}var=var=exprvar=expr
var=${str:+expr}var=var=var=expr
var=${str=expr}var=expr

str=expr

str不變

var=

str不變

var=$str

var=${str:=expr}var=str=exprvar=str=exprstr不變

var=$str

var=${str?expr}expr輸出到stderrvar=var=$str
var=${str:?expr}expr輸出到stderrexpr輸出到stderrvar=$str

高級(jí)變量用法-有類型變量

Shell變量一般是無類型的,但是bash Shell提供了declare和typeset兩個(gè)命令用于指定變量的類型,兩個(gè)命令是等價(jià)的

declare [選項(xiàng)] 變量名

[OPTION]意義
-r聲明或顯示只讀變量
-i將變量定義為整型數(shù)
-a將變量定義為數(shù)組
-A將變量定義為關(guān)聯(lián)數(shù)組
-f顯示已定義的所有函數(shù)名及其內(nèi)容
-F僅顯示已定義的所有函數(shù)名
-x聲明或顯示環(huán)境變量和函數(shù)
-l聲明變量為小寫字母 declare –l var=UPPER
-u聲明變量為大寫字母 declare –u var=lower

eval

eval命令將會(huì)首先掃描命令行進(jìn)行所有的置換,然后再執(zhí)行該命令。該命令適用于那些一次掃描無法實(shí)現(xiàn)其功能的變量.該命令對變量進(jìn)行兩次掃描

+示例:

[root@server ~]# CMD=whoami
[root@server ~]# echo $CMD
whoami
[root@server ~]# eval $CMD
root
[root@server ~]# n=10
[root@server ~]# echo {0..$n}
{0..10}
[root@server ~]# eval echo {0..$n}
0 1 2 3 4 5 6 7 8 9 10

間接變量引用

  1. eval var1=\$$var2
  2. var1=${!var2}
[root@localhost ~]$var1=var2
[root@localhost ~]$var2=mage
[root@localhost ~]$echo $var1
var2
[root@localhost ~]$echo \$$var1
$var2
[root@localhost ~]$eval echo \$$var1
mage
[root@localhost ~]$echo ${!var1}
mage

命令:mktemp

創(chuàng)建并顯示臨時(shí)文件,可避免沖突
mktemp [OPTION]... [TEMPLATE]
TEMPLATE: filenameXXX(X是隨機(jī)數(shù))

[OPTION]意義
-d創(chuàng)建臨時(shí)目錄
-p DIR或–tmpdir=DIR指明臨時(shí)文件所存放目錄位置
  • 示例:
mktemp /tmp/testXXX
tmpdir=`mktemp –d /tmp/testdirXXX`
mktemp --tmpdir=/testdir testXXXXXX

命令:install

復(fù)制文件并設(shè)置屬性
install [OPTION]... SOURCE... DIRECTORY

[OPTION]意義
-m MODE默認(rèn)755
-o OWNER所有者
-g GROUP所屬組
-d DIR創(chuàng)建空目錄
  • 示例:
#復(fù)制文件file1,2,3到dir
install -t dir file1 file2 file3

#復(fù)制文件srcfile到desfile并設(shè)置屬性
install -m 700 -o wang -g admins srcfile desfile

#創(chuàng)建目錄/testdir/installdir并設(shè)置屬性
install –m 770 –d /testdir/installdir

expect

expect 是由Don Libes基于Tcl( Tool Command Language )語言開發(fā)的,主要應(yīng)用于自動(dòng)化交互式操作的場景,借助 expect 處理交互的命令,可以將交互過程如:ssh登錄,ftp登錄等寫在一個(gè)腳本上,使之自動(dòng)化完成。尤其適用于需要對多臺(tái)服務(wù)器執(zhí)行相同操作的環(huán)境中,可以大大提高系統(tǒng)管理人員的工作效率

  • expect 語法:
    expect [選項(xiàng)] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]

  • 選項(xiàng):
    -c:從命令行執(zhí)行expect腳本,默認(rèn)expect是交互地執(zhí)行的
    示例:expect -c 'expect “\n” {send “pressed enter\n”}
    -d:可以輸出輸出調(diào)試信息
    示例:expect -d ssh.exp

  • 命令
    expect中相關(guān)命令
    spawn 啟動(dòng)新的進(jìn)程
    send 用于向進(jìn)程發(fā)送字符串
    expect 從進(jìn)程接收字符串
    interact 允許用戶交互
    exp_continue 匹配多個(gè)字符串在執(zhí)行動(dòng)作后加此命令

  • 單一分支模式語法:

expect “hi” {send “You said hi\n'}
匹配到hi后,會(huì)輸出“you said hi”,并換行
  • 多分支模式語法:
expect 'hi' { send 'You said hi\n' } 'hehe' { send 'Hehe yourself\n' } 'bye' { send 'Good bye\n' }
#匹配hi,hello,bye任意字符串時(shí),執(zhí)行相應(yīng)輸出。等同如下:
expect {
'hi' { send 'You said hi\n'}
'hehe' { send 'Hehe yourself\n'}
'bye' { send ' Good bye\n'}
}
  • 示例
#!/usr/bin/expect
spawn scp /etc/fstab 192.168.8.100:/app
expect {
'yes/no' { send 'yes\n';exp_continue }
'password' { send 'magedu\n' }
}
expect eof

#!/usr/bin/expect
spawn ssh 192.168.8.100
expect {
'yes/no' { send 'yes\n';exp_continue }
'password' { send 'magedu\n' }
}
interact
#expect eof

# 變量
#!/usr/bin/expect
set ip 192.168.8.100
set user root
set password magedu
set timeout 10
spawn ssh $user@$ip
expect {
'yes/no' { send 'yes\n';exp_continue }
'password' { send '$password\n' }
}
interact

# 位置參數(shù)
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $user@$ip
expect {
'yes/no' { send 'yes\n';exp_continue }
'password' { send '$password\n' }
}
interact
#./ssh3.exp 192.168.8.100 root magedu

# 執(zhí)行多個(gè)命令
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set timeout 10
spawn ssh $user@$ip
expect {
'yes/no' { send 'yes\n';exp_continue }
'password' { send '$password\n' }
}
expect ']#' { send 'useradd haha\n' }
expect ']#' { send 'echo magedu |passwd --stdin haha\n' }
send 'exit\n'
expect eof
#./ssh4.exp 192.168.8.100 root magedu

# shell腳本調(diào)用expect
#!/bin/bash
ip=$1
user=$2
password=$3
expect <<EOF
set timeout 20
spawn ssh $user@$ip
expect {
'yes/no' { send 'yes\n';exp_continue }
'password' { send '$password\n' }
}
expect ']#' { send 'useradd hehe\n' }
expect ']#' { send 'echo magedu |passwd --stdin hehe\n' }
expect ']#' { send 'exit\n' }
expect eof
EOF
#./ssh5.sh 192.168.8.100 root magedu

練習(xí):

參考答案:(https://pan.baidu.com/s/1V1w5ChHGuU56akZk3MsPbQ)
用for實(shí)現(xiàn)

  1. 判斷/var/目錄下所有文件的類型
  2. 添加10個(gè)用戶user1-user10,密碼為8位隨機(jī)字符
  3. /etc/rc.d/rc3.d目錄下分別有多個(gè)以K開頭和以S開頭的文件;分別讀取每個(gè)文件,以K開頭的輸出為文件加stop,以S開頭的輸出為文件名加start,如K34filename stop S66filename start
  4. 編寫腳本,提示輸入正整數(shù)n的值,計(jì)算1+2+…+n的總和
  5. 計(jì)算100以內(nèi)所有能被3整除的整數(shù)之和
  6. 編寫腳本,提示請輸入網(wǎng)絡(luò)地址,如192.168.0.0,判斷輸入的網(wǎng)段中主機(jī)在線狀態(tài)
  7. 打印九九乘法表
  8. 在/testdir目錄下創(chuàng)建10個(gè)html文件,文件名格式為數(shù)字N(從1到10)加隨機(jī)8個(gè)字母,如:1AbCdeFgH.html
  9. 打印等腰三角形
  10. 猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè)第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),只剩下一個(gè)桃子了。求第一天共摘了多少?
    用while實(shí)現(xiàn)
  11. 編寫腳本,求100以內(nèi)所有正奇數(shù)之和
  12. 編寫腳本,提示請輸入網(wǎng)絡(luò)地址,如192.168.0.0,判斷輸入的網(wǎng)段中主機(jī)在線狀態(tài),并統(tǒng)計(jì)在線和離線主機(jī)各多少
  13. 編寫腳本,利用變量RANDOM生成10個(gè)隨機(jī)數(shù)字,輸出這個(gè)10數(shù)字,并顯示其中的最大值和最小值
  14. 編寫腳本,實(shí)現(xiàn)打印國際象棋棋盤
  15. 后續(xù)六個(gè)字符串:efbaf275cd. 4be9c40b8b. 44b2395c46. f8c8873ce0. b902c16c8b. ad865d2f63是通過對隨機(jī)數(shù)變量RANDOM隨機(jī)執(zhí)行命令: echo $RANDOM|md5sum|cut –c1-10 后的結(jié)果,請破解這些字符串對應(yīng)的RANDOM值
  16. 每隔3秒鐘到系統(tǒng)上獲取已經(jīng)登錄的用戶的信息;如果發(fā)現(xiàn)用戶hacker登錄,則將登錄時(shí)間和主機(jī)記錄于日志/var/log/login.log中,并退出腳本
  17. 隨機(jī)生成10以內(nèi)的數(shù)字,實(shí)現(xiàn)猜字游戲,提示比較大或小,相等則退出
  18. 用文件名做為參數(shù),統(tǒng)計(jì)所有參數(shù)文件的總行數(shù)
  19. 用二個(gè)以上的數(shù)字為參數(shù),顯示其中的最大值和最小值
    用while read line實(shí)現(xiàn)
  20. 掃描/etc/passwd文件每一行,如發(fā)現(xiàn)GECOS字段為空,則將用戶名和單位電話為62985600填充至GECOS字段,并提示該用戶的GECOS信息修改成功
    函數(shù)練習(xí)
  21. 編寫函數(shù),實(shí)現(xiàn)OS的版本判斷
  22. 編寫函數(shù),實(shí)現(xiàn)取出當(dāng)前系統(tǒng)eth0的IP地址
  23. 編寫函數(shù),實(shí)現(xiàn)打印綠色OK和紅色FAILED
  24. 編寫函數(shù),實(shí)現(xiàn)判斷是否無位置參數(shù),如無參數(shù),提示錯(cuò)誤
  25. 編寫服務(wù)腳本/root/bin/testsrv.sh,完成如下要求
    (1) 腳本可接受參數(shù):start, stop, restart, status
    (2) 如果參數(shù)非此四者之一,提示使用格式后報(bào)錯(cuò)退出
    (3) 如是start:則創(chuàng)建/var/lock/subsys/SCRIPT_NAME, 并顯示“啟動(dòng)成功”
    考慮:如果事先已經(jīng)啟動(dòng)過一次,該如何處理?
    (4) 如是stop:則刪除/var/lock/subsys/SCRIPT_NAME, 并顯示“停止完成”
    考慮:如果事先已然停止過了,該如何處理?
    (5) 如是restart,則先stop, 再start
    考慮:如果本來沒有start,如何處理?
    (6) 如是status, 則如果/var/lock/subsys/SCRIPT_NAME文件存在,則顯示“SCRIPT_NAME is running…”,如果/var/lock/subsys/SCRIPT_NAME文件不存在,則顯示“SCRIPT_NAME is stopped…”
    (7)在所有模式下禁止啟動(dòng)該服務(wù),可用chkconfig 和 service命令管理
    說明:SCRIPT_NAME為當(dāng)前腳本名
  26. 編寫腳本/root/bin/copycmd.sh
    (1) 提示用戶輸入一個(gè)可執(zhí)行命令名稱
    (2) 獲取此命令所依賴到的所有庫文件列表
    (3) 復(fù)制命令至某目標(biāo)目錄(例如/mnt/sysroot)下的對應(yīng)路徑下
    如:/bin/bash ==> /mnt/sysroot/bin/bash
    /usr/bin/passwd ==> /mnt/sysroot/usr/bin/passwd
    (4) 復(fù)制此命令依賴到的所有庫文件至目標(biāo)目錄下的對應(yīng)路徑下: 如:/lib64/ld-linux-x86-64.so.2 ==> /mnt/sysroot/lib64/ld-linux-x86-64.so.2
    (5)每次復(fù)制完成一個(gè)命令后,不要退出,而是提示用戶鍵入新的要復(fù)制的命令,并重復(fù)完成上述功能;直到用戶輸入quit退出
  27. 編寫函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)字做為參數(shù),返回最大值
  28. 斐波那契數(shù)列又稱黃金分割數(shù)列,因數(shù)學(xué)家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:0、1、1、2、3、5、8、13、21、34、……,斐波納契數(shù)列以如下被以遞歸的方法定義:F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2)(n≥2)
    利用函數(shù),求n階斐波那契數(shù)列
  29. 漢諾塔(又稱河內(nèi)塔)問題是源于印度一個(gè)古老傳說。大梵天創(chuàng)造世界的時(shí)候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動(dòng)一個(gè)圓盤,利用函數(shù),實(shí)現(xiàn)N片盤的漢諾塔的移動(dòng)步驟
  30. 輸入若干個(gè)數(shù)值存入數(shù)組中,采用冒泡算法進(jìn)行升序或降序排序
  31. 將下圖所示,實(shí)現(xiàn)轉(zhuǎn)置矩陣matrix.sh
1 2 3      1 4 7
4 5 6 ===> 2 5 8
7 8 9      3 6 9
  1. 打印楊輝三角形
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PHP 部分語法(一)
Linux Shell編程參考大全
Bash 編程
《sed & awk》讀書筆記之 awk 篇
JavaScript基礎(chǔ)案例篇(題目附代碼)
JavaScript語言精髓與編程實(shí)踐20071115 筆記1 第一章十年JavaScript 第二章JavaScript的語法
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服