Linux Shell 003-變量

Linux Shell 003-變量

本節關鍵字:Linux、Shell、變量、全局變量、系統變量
相關指令:read、echo、unset、export

變量的含義

  • 變量是用來臨時保存數據的,該數據是可以變化的數據。
  • 如果某個內容需要多次使用,并且在代碼中重復出現,那么可以用變量代表該內容,這樣在修改內容的時候,僅僅需要修改變量的值。
  • 在代碼運作的過程中,可能會把某些命令的執行結果保存起來,后續代碼需要使用這些結果,就可以直接使用這個變量。

變量的定義

定義變量:變量名=變量值
取消變量:unset 變量名
說明:變量名用來臨時保存數據,變量值是臨時的可變化的數據

變量的命名規則

  • 變量名區分大小寫
  • 變量名不能有特殊符號
  • 變量名不能以數字開頭
  • 等號兩邊不能有任何空格
  • 變量名盡量做到見名知意

變量的定義方式

基本定義方式,直接復制給一個變量
# $A與${A}的區別
A=12345
echo $A
echo ${A:2:3}# 將命令執行結果賦值給變量
A=`hostname`
A=$(uname -r)
交互式定義變量,使用read命令

語法

read [選項] 變量名

常用選項

選項說明
-p定義提示用戶的信息
-n定義字符數
-s不顯示用戶輸入的內容
-t定義超時時間,默認單位為秒

使用示例

$ read -p "Input your name:" name
$ read -s -p "input your password" passwd
$ read -s -n 5 -p "input your password" passwd
$ read -s -t 5 -n 5 -p "input your password" passwd
變量值來自文件,使用read命令

語法

read [選項] 變量名 < 文件名

使用示例

$ cat test
192.168.203.66 255.255.255.0
$ read ip mask < test
$ echo $ip
192.168.203.66
$ echo $mask
255.255.255.0
定義有類型變量 - 使用declare

語法

declare [選項] 變量名=變量值

常用選項

選項說明
-i將變量看成整數
-r定義只讀變量
-a定義普通數組;查看普通數組
-A定義關聯數組;查看關聯數組
-x將變量通過環境導出,等價于export

使用示例

$ declare -i A=123
$ echo $A
123
$ A=hello
$ echo $A
0
$ declare -r B=hello
$ echo $B
hello
$ B=world
-bash: B: readonly variable
$ unset B
-bash: unset: B: cannot unset: readonly variable

變量的分類

本地變量

概念:當前用戶自動以的變量,當前進程中有效,其他進程及當前進程的子進程無效

環境變量

概念:當前進程有效,并且能夠被子進程調用(進程樹 ps auxf | grep 進程名)

命令說明
env查看當前用戶的環境變量
set查詢當前用戶的所有變量
export變量名=變量值 或者 變量名=變量值;export 變量名
全局變量

概念:全局所有的用戶和程序都能調用,且集成,新建的用戶也默認能調用
相關配置文件:

文件名說明
$HOME/.bashrc當前用戶的bash信息,用戶登錄時讀取,如:定義別名、umask、函數等
$HOME/.bash_profile當前用戶的環境變量,用戶登錄時讀取
$HOME/.bash_logout當前用戶退出當前shell時讀取,如:定義用戶退出時執行的程序等
$HOME/.bash_history用戶的歷史命令,history -w 保存歷史記錄; history -c 清空歷史記錄
/etc/bashrc全局的bash信息,對所有用戶都生效
/etc/profile全局環境變量信息,對系統和所有用戶都生效

注意:以上文件修改后,都需要重新加載,可以使用source命令、.命令或退出重新登錄,例如:

$ source $HOME/.bashrc
$ . $HOME/.bashrc
用戶登錄系統讀取相關文件的順序

(1)/etc/profile
(2)$HOME/.bash_profile
(3)$HOME/.bashrc
(4)/etc/bashrc
(5)$HOME/.bash_logout

系統變量

概念:內置bash中變量,shell本身已經固定好了它的名字和作用

內置變量
內置變量說明
$?上一條命令的執行結果,0表示執行成功,非0表示執行失敗
$0當前執行的程序或腳本名稱
$#腳本后面跟的參數個數
$*腳本后面所有參數,將所有參數當成一個整體輸出,每個參數之間使用空格隔開
$@腳本后面所有參數,每個參數都是獨立的,依次全部輸出
$1-$9腳本后面的位置參數,$1表示第一個位置的參數
10 ? {10}- 10?{n}腳本后面的位置參數擴展,從第10個位置開始,后面的位置數字必須用大括號{}括起來(2為數字以上括起來)
$$當前進程的進程號
$!當前終端,后臺運行的最后一個進程的進程號
!$調用歷史最后一條命令中的參數

補充:轉義字符為 \,查看后臺運行的進程指令為jobs

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

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

相關文章

Java自動機實現

這篇文章將解決在Java中實現有限狀態機的問題。 如果您不知道什么是FSM或在什么地方可以使用FSM&#xff0c;您可能會熱衷于閱讀此 &#xff0c; 這個和這個 。 如果您發現自己在設計上使用FSM的情況&#xff0c;則可能已經開始為實現相同接口的每個狀態編寫類。 一個好的設計可…

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files這個文件找不到

在C:\Windows\Microsoft.NET\Framework64\v4.0.30319文件夾下面建立Temporary ASP.NET Files 文件夾&#xff08;Framework64 注意64&#xff0c;這個可能是我們用的64位系統&#xff0c;但是vs2010不分32位還是64位&#xff0c;所以在C:\Windows\Microsoft.NET\Framework\v4.0…

java電腦運行視頻演示_javaweb視頻第一天(二)

無論通過哪種方式得到的class類對象&#xff0c;是同一個。比較的是地址碼這里教會你&#xff1a;如何去使用class對象現在就知道這個&#xff1a;如何使用反射&#xff0c;并且說反射是實現了什么樣的功能。如何通過反射得到里面的相應字段&#xff0c;得到里面的相應函數等等…

模型驅動 ModelDriven

ModelDriven:模型驅動,對所有action的模型對象進行批處理. 我們在開發中&#xff0c; 在action中一般是用實體對象&#xff0c;然后給實體對象get&#xff0c;set方法。 RegAction{   User user ;   //get/set} 然后在jsp頁面中給action中的user屬性綁定值是通過如下方式 &…

本月風味– Neo4j和Heroku

Neo4j今年早些時候發起了一項挑戰&#xff0c;即“ 種子播云 ”&#xff0c;以使人們使用Neo4j附加組件在Heroku上創建模板或演示應用程序。 經過許多內部辯論之后&#xff0c;我決定進入&#xff0c;但由于缺乏想法而陷入絕望。 當我什么都沒做的時候&#xff0c;這個主意就出…

1 + 11 + 1111+ 11111+ ..... + 11111(2016個) 結果是幾位數

# -*- coding: utf-8 -*- """ Created on Mon Mar 21 20:38:06 2016author: yanjie """1 11 1111 11111 ..... 11111(2016個) 結果是幾位數 用什么數據結構 有幾個6 寫算法a []; m 0; six 0; for i in range(2016,0,-1):b (im) % 10;m (…

[回歸分析][10]--相關誤差的問題

[回歸分析][10]--相關誤差的問題這一篇文章還是來分析相關誤差的問題。 1.游程數 定義&#xff1a;游程數--殘差穿過x-軸的次數 用這個可以檢查如殘差有一塊在x軸上面&#xff0c;一塊在x軸下面的情形。 如上面這樣的殘差 下面構造兩個統計量&#xff1a; 其中 n…

Spring 3 MVC異常處理程序

我遇到的大多數Spring 3錯誤處理示例代碼似乎都提供了其用法的最簡單概述&#xff0c;但是&#xff0c;有人說&#xff0c;如何處理錯誤比正常代碼的工作方式更為重要。 前一天&#xff0c;當我在Spring&#xff08;2&#xff09;錯誤處理程序中遇到一個簡單的GOTCHA時&#xf…

java編譯找不到符號_javac編譯時找不到符號?

我是個新手&#xff0c;在linux使用java編程時&#xff0c;出現這個情況。我把要引的包放在classpath中&#xff0c;紅色部分&#xff1a;export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/hadoop-1.0.4.core.jar:${CLASSPATH}通過echo $CLASSP…

全備份、差異備份和增量備份概念詳述

全備份、差異備份和增量備份概念詳述 1、完全備份&#xff08;Full Backup&#xff09; 備份全部選中的文件夾&#xff0c;并不依賴文件的存檔屬性來確定備份那些文件。在備份過程中&#xff0c;任何現有的標記都被清除&#xff0c;每個文件都被標記為已備份。換言之&#xff0…

微信接入登錄功能access_token流程記錄

提示&#xff1a;只有認證過的訂閱號或者服務號才能獲取access_token。 1.app微信登錄第一步是&#xff0c;app調起來微信客戶端&#xff0c;通過app端的配置&#xff0c;引入一個微信類庫&#xff0c; 2.授權成功后&#xff0c;微信會返回你一個code。 將APP_ID替換成你在微信…

使用MVC模式制作游戲-教程和簡介

游戲開發中一種有用的體系結構模式是MVC&#xff08;模型視圖控制器&#xff09;模式。 它有助于分離輸入邏輯&#xff0c;游戲邏輯和UI&#xff08;渲染&#xff09;。 在任何游戲開發項目的早期階段&#xff0c;其實用性很快就會被注意到&#xff0c;因為它允許快速更改內容&…

boost

參考博客 http://www.cnblogs.com/lidabo/p/3805487.html http://www.cppblog.com/Robertxiao/archive/2013/01/06/197022.html http://www.cnblogs.com/finallyliuyu/archive/2013/05/23/3094246.html http://www.cnblogs.com/lidabo/p/3782193.html http://www.cnblogs.com/z…

moment格式換時間_不一樣的日期、時間轉換(moment.js)

無意中遇到了一種很奇怪的日期格式&#xff0c;從接口中返回的日期是這樣的&#xff0c;如 2018-02-06T11:59:2208:00 。然而這卻不是我們想要的&#xff0c;我們要的是這種&#xff0c;YYYY-MM-DD HH:mm:ss。那么這種是怎么轉換的呢&#xff1f;這時候就可以使用一款很好用的日…

并發模式:生產者和消費者

在我15年的職業生涯中&#xff0c;生產者和消費者的問題是我僅遇到過幾次。 在大多數編程情況下&#xff0c;我們正在做的事情是以同步方式執行功能&#xff0c;其中JVM或Web容器自行處理多線程的復雜性。 但是&#xff0c;在編寫某些需要的用例時。 上周&#xff0c;我遇到了一…

POJ 1006 - Biorhythms (中國剩余定理)

B - BiorhythmsTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1006Description 人生來就有三個生理周期&#xff0c;分別為體力、感情和智力周期&#xff0c;它們的周期長度為23天、28天和33天。每一個周期中…

子線程中更新UI線程的三個方法

1、通過handler方式&#xff0c;sendmessage。 多個類間傳遞比較麻煩&#xff0c;也懶的寫... 2、線程中通過runOnUiThread&#xff08;&#xff09; new Thread() { public void run() { //這兒是耗時操作&#xff0c;完成之后更新UI&#xff1b; runOnUiThread(new Runnab…

mysql limit acs_mysql查詢操作

簡單查詢&#xff1a;select * from 表名;避免重復&#xff1a;select distinct 字段 from 表名;條件查詢&#xff1a;select 字段,字段 from 表名 where id<5(條件);四則運算查詢&#xff1a;select id,dep_id,id*dep_id from company.employee5 where id<5;定義顯示格式…

作業管理系統數據字典

轉載于:https://www.cnblogs.com/heyangcan/p/5312394.html

使用Hive和iReport進行大數據分析

每個JJ Abrams的電視連續劇疑犯追蹤從主要人物芬奇先生一個下列敘述情節開始&#xff1a;“ 你是被監視。 政府擁有一個秘密系統-每天每天每小時都會對您進行監視的機器。 我知道是因為...我建造了它。 “當然&#xff0c;我們的技術人員知道得更多。 龐大的電氣和軟件工程師團…