Shell之系统函数和自定义函数
一、系統函數
1.basename基本語法
basename [string / pathname][suffix] (功能描述:basename命令會刪掉所有的前綴包括最后一個(‘/’)字符,然后將字符串顯示出來。
2、案例
(1)截取該/home/laoxiao/14for循環語句-4.sh路徑的文件名稱
選項:suffix為后綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。
[root@mylinux2 shell]# basename /home/shell/14for循環語句-4.sh .sh 14for循環語句-4 [root@mylinux2 shell]# basename /home/shell/14for循環語句-4.sh 語句-4.sh 14for循環3、dirname基本語法
dirname 文件絕對路徑 (功能描述:從給定的包含絕對路徑的文件名中去除文件名(非目錄的部分),然后返回剩下的路徑(目錄的部分))
4、綜合運用
將/opt/test/目錄下的所有文件改為以.txt結尾
二、 自定義函數
1.基本語法
[ function ] funname[()] { Action; [return int;] } funname注意:
(1)必須在調用函數地方之前,先聲明函數,shell腳本是逐行運行。不會像其它語言一樣先編譯。
(2)函數返回值,只能通過$?系統變量獲得,可以顯示加:return返回,如果不加,將以最后一條命令運行結果,作為返回值。return后跟數值n(0-255)
(3)可以采用標準輸出:echo來作為函數的返回值
2、通過自定義函數計算輸入的2個參數的和
1 #!/bin/bash2 3 #自定義的一個函數4 function sum(){5 6 s=$[$1+$2]7 return $s8 9 }10 11 sum 100 20012 13 echo $?執行結果為:44
[root@mylinux2 shell]# bash 17自定義函數1.sh 44分析:執行結果為什么是44呢?明顯不對,什么原因呢?
因為return后跟數值n(0-255)
執行結果為:210
[root@mylinux2 shell]# bash 17自定義函數1.sh 2103、解決當2個數的和大于255的方法
可以采用標準輸出:echo來作為函數的返回值
三、計算1到n的階乘
1 #!/bin/bash2 3 if [ $# -ne 1 ];then4 echo "參數錯誤,程序錯誤"5 exit 36 fi7 8 #任何一個大于1的數字,它的階乘=n*(n-1)的階乘9 10 function jiecheng(){11 n=$112 if [ $n -le 1 ];then13 echo 1 #當成n=1的時候函數的返回值14 return 0 #返回的是執行狀態15 elif [ $n -gt 1 ];then16 let pre_n=n-117 temp=`jiecheng $pre_n` ##計算n-1的階乘18 let result=n*temp19 echo $result20 return 021 fi22 23 }24 25 jiecheng $1總結
以上是生活随笔為你收集整理的Shell之系统函数和自定义函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python——多态
- 下一篇: Shell编程之case语句