成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Shell基本語法之一:什么是變量?

系統
在本書中,我們將shell的基本語法分為5塊:變量、運算符、條件、循環、函數(其實任何程序語言都可以說是由這幾塊組成)。

 [[409619]]

在本書中,我們將shell的基本語法分為5塊:變量、運算符、條件、循環、函數(其實任何程序語言都可以說是由這幾塊組成)。

本節內容就分別簡短地介紹下Shell的基本語法,有其他語言經驗的讀者們可能會更好理解。

沒有其他語言經驗的多寫幾個Shell腳本也就理解了。

1.變量是什么?

顧名思義,變量通常是可變的。在計算機程序語言中,這是第一個需要了解的概念。

簡單來說,在數學上它是計算公式中的x,在物理上它是一個內存空間。

在聲明變量時,相當于在計算機內存中,開辟了一個地方,存放了這個變量符號。

它會不斷地被賦值,每被賦值一次,之前的值就會被清空,它的內部就保存了現在這個值的數據。

2.變量賦值

賦值示例:

  1. war_name=yaomm      ## 賦值yaomm這個數據給了war_name這個變量 

變量的賦值規則:

  1. 變量名和等號之間不能有空格,例如“war_name = yao”。 
  2.  
  3. 命名只能使用英文字母、數字和下劃線,首字符不能以數字開頭,例如“3war”。 
  4.  
  5. 變量名中間不能有空格,可以使用下劃線“_”,例如“war name”。 
  6.  
  7. 變量名不能使用標點符號,如點“.”,例如“.=yaomm”。 
  8.  
  9. 不能使用bash里的關鍵字(可用help命令查看保留關鍵字),例如“bash=233”。 

3.變量使用示例

  1. [root@linuxido ~]# var_name=yaomm   ##  變量賦值,賦值var_name變量為yaomm 
  2. [root@linuxido ~]# echo ${var_name} ##  使用echo打印變量,變量以【${}】方式引用 
  3. yaomm 
  4. [root@linuxido ~]# echo $var_name       ##  也可以使用【$ + 變量名】輸出變量值 
  5. yaomm 
  6. [root@linuxido ~]# echo "var_name is $var_name" ## ==> 變量可以在雙引號中被引用 
  7. var_name is yaomm 

${var_name}與$var_name的區別是:被花括號包圍的變量不會產生歧義。

例如有一個變量名為var_nameexe的值是23,此時echo $var_nameexe 應打印什么值?

4.變量傳參

什么是變量傳參?

即在編寫腳本時預留一個變量,然后由外部傳遞進來一個具體的值給這個變量。

示例如下:

  1. [root@linuxido shell]# cat 001.sh   ##  查看使用【vi 001.sh】編輯的第一個腳本 
  2. #!/bin/bash 
  3. # author:姚毛毛的博客 
  4.  
  5. echo "Shell 傳遞參數實例!" 
  6. echo '第一個參數${1}:'  ${1} 
  7. echo '第二個參數$2:'  $2 
  8. echo '參數個數$#:'  $# 
  9. echo '所有參數作為一個字符串顯示$*:'  $* 
  10. echo '所有參數合為數組$@:'  $@ 
  11. echo '當前腳本進程號PID:'  $$ 
  12.  
  13. [root@linuxido shell]# sh 001.sh yaomm 666  ##  執行001.sh,參數有2個:yaomm、666 
  14. Shell 傳遞參數實例! 
  15. 第一個參數$1:yaomm 
  16. 第二個參數$2:666 
  17. 參數個數$#:2 
  18. 所有參數作為一個字符串顯示$*:yaomm 666 
  19. 所有參數合為數組$@:yaomm 666 
  20. 當前腳本進程號PID:65134 

參數傳遞規則:

  1. $0:腳本自身文件名。 
  2.  
  3. $#:傳遞到腳本的參數個數。 
  4.  
  5. $n:傳遞到腳本的第一個參數,n為傳遞參數的順序。 
  6.  
  7. $*:所有參數合成一個字符串。 
  8.  
  9. $@:所有參數,一個數組。 
  10.  
  11. $$:當前腳本運行的進程號PID。 
  12.  
  13. $?:上一個腳本、函數返回結果。 

要執行的腳本為全路徑時,使用$0會獲取到腳本路徑,如果只想取腳本路徑或者腳本名稱,可以使用【dirname】、【basename】這兩個命令,如下所示:

  1. [root@linuxido /shell]# dirname /shell/001.sh       ##  獲取路徑 
  2. /shell 
  3. [root@linuxido /shell]# basename /shell/001.sh  ##  獲取腳本名稱 
  4. 001.sh 

5.數組

在Shell中除了普通變量外,還有個數組變量(只支持一維數組)。

與其他語言類似,數組下標從0開始。

不同的是,數組內容要用括號來表示,數組元素之間使用空格分割。

示例如下:

  1. [root@linuxido shell]# war_array=(y ao "mm" 1987)   ##  設置數組元素內容 
  2. [root@linuxido shell]# echo ${war_array[*]} ##  打印所有數組元素 
  3. y ao mm 1987 
  4. [root@linuxido shell]# echo ${war_array[2]} ##  打印第三個數組元素 
  5. mm 
  6. [root@linuxido shell]# echo ${#war_array[@]}    ##  數組元素個數 
  7. [root@linuxido shell]# echo ${#war_array[*]}    ##  數組元素個數 

或者使用下標定義數組:

  1. war_array[0]=y 
  2. war_array[1]=ao 
  3. war_array[2]=’mm’ 
  4. war_array[3]=2021 

 

責任編輯:武曉燕 來源: Linux常用命令
相關推薦

2009-10-23 13:24:20

linux Shell

2010-03-23 15:52:41

Linux shell

2009-12-25 09:55:18

LinuxShell編程Shell基本語法

2011-04-25 11:18:39

Ajax

2012-03-15 16:12:57

JavaHashMap

2023-07-07 15:58:32

Netcat程序Linux

2010-02-23 12:03:37

CentOS系統

2009-09-14 09:55:55

Linq基本語法

2022-08-21 16:27:36

LinuxShell

2020-02-28 08:21:37

制造業邊緣計算物聯網

2012-11-19 09:36:35

虛擬化云計算核心

2020-08-25 07:44:18

數據庫數據安全

2021-11-14 22:14:08

人工智能機器學習工具

2011-06-15 15:55:36

PHP

2010-05-28 13:14:06

MySQL基本語法

2010-07-20 15:18:41

Perl基本語法

2022-09-09 08:51:42

ShellLinux

2012-10-18 16:49:05

微軟思科 VMware

2023-09-07 07:20:36

SpaCy自然語言

2010-04-30 01:00:08

Unix shell
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本午夜网 | 欧美 中文字幕 | 欧美a∨ | 毛片一级片 | 久久精品视频一区二区三区 | 国精产品一品二品国精在线观看 | 91精品国产综合久久久久久 | 国产精品日韩欧美一区二区三区 | 黑人成人网| 伊人看片| 国产xxx在线观看 | 久久久久精 | 毛片一级片 | 久久综合香蕉 | 精品国产一区二区三区久久狼黑人 | 7777精品伊人久久精品影视 | 人人干人人干人人 | 另类 综合 日韩 欧美 亚洲 | 精品欧美在线观看 | 在线播放日韩 | 一区二区三区视频 | 成人妇女免费播放久久久 | 久久久精品高清 | 国产精品国产a级 | 日韩成人在线一区 | 国产精品123区 | 天天干天天草 | 国产免费让你躁在线视频 | 国产人免费人成免费视频 | 盗摄精品av一区二区三区 | 国内自拍真实伦在线观看 | 亚洲视频一区二区三区 | 亚洲一区自拍 | 国内自拍视频在线观看 | 国产精品99久久久久久动医院 | 天天色综 | 一区二区三区精品视频 | 亚洲免费人成在线视频观看 | 国产成人一区二区三区 | 亚洲精品毛片av | 精品国产视频在线观看 |