Shell腳本——函數

Shell 函數的本質是一段可以重復使用的腳本代碼,這段代碼被提前編寫好了,放在了指定的位置,使用時直接調取即可。

一、語法

Shell 函數定義的語法格式如下:

function name() {statements[return value]
}

對各個部分的說明:

  • function是 Shell 中的關鍵字,專門用來定義函數;
  • name是函數名;
  • statements是函數要執行的代碼,也就是一組語句;
  • return value表示函數的返回值,其中 return 是 Shell 關鍵字,專門用在函數中返回一個值;這一部分可以寫也可以不寫。
  • { }包圍的部分稱為函數體,調用一個函數,實際上就是執行函數體中的代碼。

二、函數定義的簡化寫法

函數定義時也可以不寫 function 關鍵字:

name() {statements[return value]
}

如果寫了 function 關鍵字,也可以省略函數名后面的小括號:

function name {statements[return value]
}

三、函數調用

調用 Shell 函數時可以給它傳遞參數,也可以不傳遞。如果不傳遞參數,直接給出函數名字即可:

name

如果傳遞參數,那么多個參數之間以空格分隔:

name param1 param2 param3

不管是哪種形式,函數名字后面都不需要帶括號。

和其它編程語言不同的是,Shell 函數在定義時不能指明參數,但是在調用時卻可以傳遞參數,并且給它傳遞什么參數它就接收什么參數。

Shell 也不限制定義和調用的順序,你可以將定義放在調用的前面,也可以反過來,將定義放在調用的后面。

四、范例

定義一個函數,計算所有參數的和:

#!/bin/bash
function getsum(){local sum=0for n in $@do((sum+=n))donereturn $sum
}
getsum 10 20 55 15  #調用函數并傳遞參數
echo $?

$@表示函數的所有參數,$?表示函數的退出狀態(返回值)

五、系統函數

5.1、basename基本語法

basename [string / pathname] [suffix]  

功能描述:basename命令會刪掉所有的前綴包括最后一個(‘/’)字符,然后將字符串顯示出來。

選項:

suffix為后綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。

5.2、dirname基本語法

	dirname #文件絕對路徑	

功能描述:從給定的包含絕對路徑的文件名中去除文件名(非目錄的部分),然后返回剩下的路徑(目錄的部分)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535565.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535565.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535565.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

scala通過JDBC進行數據庫操作

scala通過JDBC方式操作mysql (需要加載 mysql-connector-java 驅動) maven依賴&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency>一…

Linux下Java的安裝與配置

0、下載好JDK安裝包后上傳到Linux服務器的/usr/local/java/下 1、解壓tar -zxvf jdk-8u251-linux-x64.tar.gz 2、改名mv jdk1.8.0_251 jdk1.8 3、配置環境變量vi /etc/profile 添加以下內容 #JAVA export JAVA_HOME/usr/local/java/jdk1.8 export JRE_HOME$JAVA_HOME/jre e…

運維同步rsync

Rsync(remote rynchronization)是一款開源的、快速的、多功能的、可實現全量以及增量的本地或者遠程數據同步的備份的優秀工具&#xff0c;可使本地主機不同分區或目錄之間及本地和遠程兩臺主機之間的數據快速同步鏡像&#xff0c;遠程備份等功能同時它在同步文件的同時可以保…

Spark初識-什么是Spark

Spark是一個基于內存的開源計算框架&#xff0c;于2009年誕生于加州大學伯克利分校AMPLab&#xff08;AMP&#xff1a;Algorithms&#xff0c;Machines&#xff0c;People&#xff09;&#xff0c;它最初屬于伯克利大學的研究性項目&#xff0c;后來在2010年正式開源&#xff0…

系統優化

1、關閉selinux sed -i ‘s/SELINUXenforcing/SELINUXdisabled’ setenforce 0 2.精簡開機服務 ntsysv setup system service

Spark初識-Spark與Hadoop的比較

Spark&#xff0c;是分布式計算平臺&#xff0c;是一個用scala語言編寫的計算框架&#xff0c;基于內存的快速、通用、可擴展的大數據分析引擎 Hadoop&#xff0c;是分布式管理、存儲、計算的生態系統&#xff1b;包括HDFS&#xff08;存儲&#xff09;、MapReduce&#xff08;…

Spark初識-Spark基本架構概覽使用

當需要處理的數據量超過了單機尺度(比如我們的計算機有4GB的內存&#xff0c;而我們需要處理100GB以上的數據)這時我們可以選擇spark集群進行計算&#xff0c;有時我們可能需要處理的數據量并不大&#xff0c;但是計算很復雜&#xff0c;需要大量的時間&#xff0c;這時我們也可…

Spark初識-彈性分布式數據集RDD

Spark 的核心是建立在統一的抽象彈性分布式數據集&#xff08;Resiliennt Distributed Datasets&#xff0c;RDD&#xff09;之上的&#xff0c;這使得 Spark 的各個組件可以無縫地進行集成&#xff0c;能夠在同一個應用程序中完成大數據處理。 一、RDD概念 RDD 是 Spark 提供…

nmon

1).采集數據&#xff1a; #nmon -s10 -c60 -f -m /home/ 參數解釋&#xff1a; -s10 每 10 秒采集一次數據。 -c60 采集 60 次&#xff0c;即為采集十分鐘的數據。 -f 生成的數據文件名中包含文件創建的時間。 -m 生成的數據文件的存放目錄。 這樣就會生成一個 nmon 文件&…

Spark入門- Spark運行Local本地模式

一、Spark單機模式部署 Spark版本 &#xff1a; spark-2.4.7-bin-hadoop2.7 1、安裝配置JDK環境 2、下載Spark 官網下載http://spark.apache.org/ 然后上傳到LInux服務器上 3、解壓 tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz解壓目錄說明 bin 可執行腳本 conf …

Spark入門-了解Spark核心概念

在本文中我們將從Spark集群角度和程序應用的角度來對相關概念進行了解 一. 站在集群角度 1.1 Master Spark 特有資源調度系統的 Leader。掌管著整個集群的資源信息&#xff0c;類似于 Yarn 框架中的 ResourceManager&#xff0c;主要功能&#xff1a; 監聽 Worker&#xff0…

Spark運行standalone集群模式

spark的集群主要有三種運行模式standalone、yarn、mesos&#xff0c;其中常被使用的是standalone和yarn&#xff0c;本文了解一下什么是standalone運行模式&#xff0c;并嘗試搭建一個standalone集群 一、standalone模式 standalone模式&#xff0c;是spark自己實現的&#xf…

docker原理

a.更快速的支付和部署:開發者可以使用一個標準的鏡像來構建一套開發容器 ,開發完成之后,運維人員可以直接使用這個容器來部署代碼。 b.更高效的虛擬化: Docker容器的運行不需要額外的hypervisor支持,它是內核級的虛擬化,因此 可以實現更高的性能和效。 I 0c更輕松的遷移和擴展…

創造型模式——工廠模式

工廠模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 在工廠模式中&#xff0c;我們在創建對象時不會對客戶端暴露創建邏輯&#xff0c;并且是通過使用一個共同的…

創造型模式——抽象工廠模式

抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09;是圍繞一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 在抽象工廠模式中&#xff0c;接口是負責創建一個相關對象的…

Iptables防火墻原理

一、IPTABLES概念 iptables是隔離主機以及網絡的工具,通過自己設定的規則以及處理動作對數據報文進行檢測以及處理。從設備上分類,防火墻分為軟件防火墻、硬件防火墻、芯片級防火墻。從技術上分類,防火墻分為數據包過濾型防火墻、應用代理型防火墻。這是因為四層模型的每一…

創造型模式——單例模式

單例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最簡單的設計模式之一。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 這種模式涉及到一個單一的類&#xff0c;該類負責創建自己的對象&#xff0c;同時確保只有單個對象被創建…

trap命令

trap命令用于指定在接收到信號后將要采取的行動,信號的信息前面已經提到。 trap 命令的一種常見用途是在腳本程序被中斷時完成清理工作。 歷史上,shell 總是用數字來代表信號,而新的腳本程字應該使用信號的名字,它們保存在用#include命令包含進來的signal.h頭文件中,在使用…

創造型模式——建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;使用多個簡單的對象一步一步構建成一個復雜的對象。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 一個 Builder 類會一步一步構造最終的對象。該 Builder 類是獨立于其他對象的。 一、介紹…

shell知識點

靜態語言是編譯型語言,強類型的語言 如C,C++,java(面向對象),C#, 動態語言是解釋型語言,弱類型的語言,邊解釋邊執行 ,需要解釋器,解釋器是用靜態語言開發的如shell(面向過程), perl,asp,asp.net,php,python(面向對象) 腳本執行 1.…