shell程式設計

2021-10-23 08:51:37 字數 2807 閱讀 4807

參考教程:

感覺都差不多

這裡我想了一下,直接上手寫**可能效果會更好。

//插入排序

function insertsort(a)

a[j] = temp;

} //end for

return a

}

上面是我曾經寫過的插入排序,涉及到的內容有:

函式變數

陣列迴圈

條件語句

邏輯運算子

算數運算子

感覺能用shell寫出來,就對shell理解差不多了。

//插入排序

function insertsort(a)

寫出形如上面的shell**

[root@localhost ~]# cd /root/new

[root@localhost new]# vim insertsort.sh

編輯insertsort.sh,按a鍵插入**

#!/bin/bash

#插入排序

function insertsort()

然後按

esc :wq

退出編輯並儲存

賦執行許可權

[root@localhost new]# chmod u+x insertsort.sh
然後執行該指令碼

我們需要傳入乙個陣列,並列印傳出的陣列

#!/bin/bash

#插入排序

function insertsort()

#嘗試返回各引數,看是不是陣列

echo "第乙個引數$"

echo "第二個引數$"

echo "第三個引數$"

return 0

#這個return好像沒有什麼卵用,只能返回0-255,只能用echo返回了

}for i in $*

do a[i]=$i

done

echo "引數個數為:$"

#輸出陣列個數

insertsort $a

執行指令碼,效果如下

[root@localhost new]# ./insertsort.sh 1 2 3

引數個數為:3

1 2 3

第乙個引數1

第二個引數2

第三個引數3

[root@localhost new]#

這裡使用 ./insertsort.sh執行指令碼,後面跟著的1 2 3是三個引數

然後進入指令碼內容,首先使用乙個迴圈,將引數賦給陣列a

for i in $*

do a[i]=$i

done

$1就是傳入的第乙個引數,

$2就是傳入的第二個引數,

我暫時沒想到如何將所有的引數直接傳入陣列a,只能寫迴圈

其它引數如下

看到接下來的一行**

echo "引數個數為:$"
結果

引數個數為:3

for迴圈中,for i in $*和for i in $@用起來效果一樣

可能在別的情況下是不一樣的吧

現在能傳入陣列a了,然後繼續修改

最後**如下

#!/bin/bash

#插入排序

function insertsort()

echo "陣列長度:$n"

for ((i=1;i

do j=$i

temp=$

#echo "temp:$temp"

#echo "j:$j"

#echo $

while (( $j>0 && $>$temp ))

do a[$j]=$

j=$[$j-1]

done

a[$j]=$temp

done

echo "排序後的陣列為:$"

#echo $n

#echo "a[o]:$"

#echo "a[1]:$"

#echo "a[2]:$"

#echo "a[3]:$"

return 0

}k=0

for i in $*

do #echo "引數為$i"

#echo "陣列長度$"

a[$k]=$i

let "k++"

done

echo "未排序的陣列為:$"

#echo "引數個數為:$"

#輸出陣列個數

insertsort $a

執行插入排序效果如下:

[root@localhost new]# ./insertsort.sh 5 4 3 2 1

未排序的陣列為:5 4 3 2 1

陣列長度:5

排序後的陣列為:1 2 3 4 5

[root@localhost new]#

說實話,比寫c語言還麻煩。

Shell程式設計 shell特性

linux會預設記錄1000條歷史記錄,可通過 echo histsize 檢視,如果講histsize更改為2000,那麼會預設儲存2000條。1000條記錄儲存在家目錄的 bash history 中,僅當使用者正常退出當前shell時,當前shell中執行的命令才會儲存到 bash histo...

Shell程式設計 Shell函式

shell函式 1.將命令序列按格寫在一起 2.可方便重複使用命令序列 3.shell函式定義 function 函式名 4.呼叫函式的方法 函式名 引數1 引數2 5.shell函式應用示例 1 兩個數字求和 要求 通過sum 定義函式 兩個數求和 方法一 root localhost vim d...

Shell程式設計

1 建立指令碼 vi emacs等即可 bin sh 2 shell變數 對shell來講,所有的變數的取值都是乙個字串 shell是一種解釋性語言,變數無需事先定義 shell中的系統變數 程式命令列引數的數目 儲存前乙個命令的返回值 0 當前程式名 以 1 2 形式儲存所有輸入的命令列引數 以 ...