色www,五月婷婷深爱五月,午夜国产一级片,色噜噜综合,国产大胸无码视频,清纯美女被操黄网站在线观看,波多野结衣av高清一区二区三区

linux shell編程變臉賦值和字符串操作

時(shí)間:2024-08-04 15:43:43 Linux認(rèn)證 我要投稿
  • 相關(guān)推薦

linux shell編程變臉賦值和字符串操作

  1.用戶定義的變量

  用戶定義的變量有字母數(shù)字及下劃線組成,并且變量名的第一個(gè)字符不能為數(shù)字.

  與其它UNIX名字一樣,變量名是大小寫(xiě)敏感的.

  對(duì)于變量,用戶可按如下方式賦值:

  name = value

  在引用變量時(shí),需在前面加$符號(hào),用戶也可以在變量間進(jìn)行相互賦值,如:

  (前面的$是命令提示符)

  $ JOHN = john

  $ NAME = $JOHN

  $ echo Hello $NAME

  Hello john

  也可以用變量和其他字符組成新的字,這時(shí)可能需要把變量用{}括起,如:

  $ SAT = Satur

  $ echo Today is ${SAT}day

  Today is Saturday

  對(duì)于未賦值的變量,Bash以空值對(duì)待,用戶也可以用unset命令清除給變量

  賦的值.

  Bash中還可以使用數(shù)組變量,其賦值有兩種:

  (1) name[index] = value

  (2) name = (value1 ... valuen) 此時(shí)下標(biāo)從0開(kāi)始

  數(shù)組下標(biāo)的范圍沒(méi)有任何限制,同時(shí)也不必使用連續(xù)的分量.

  Bash中關(guān)于變量的內(nèi)建命令有:

  (1) declare和typeset.兩者具有一樣的功能.其選項(xiàng)有:

  [-/ ]a 設(shè)置/撤消變量的數(shù)組屬性

  [-/ ]i 設(shè)置/撤消變量的整數(shù)屬性

  [-/ ]r 設(shè)置/撤消變量的只讀屬性

  [-/ ]x 設(shè)置/撤消變量的輸出屬性

  -p var 顯示變量屬性

  (2) export和local.

  export把變量輸出到環(huán)境中,用法為:

  export name

  export name = value

  這里需要簡(jiǎn)單介紹一下export的作用:當(dāng)Bash shell執(zhí)行一個(gè)

  程序時(shí),將首先為該程序建立一個(gè)新的執(zhí)行環(huán)境,稱為子shell,

  在Bash Shell中變量都是局部的,即它們只是在創(chuàng)建它們的子

  Shell中是有意義的,使用export后,變量被設(shè)置為全局變量,這

  時(shí)可以被其它子Shell所識(shí)別

  local標(biāo)記變量為局部的(如只能被函數(shù)內(nèi)部使用),用法為:

  local name

  local name = value

  (3) readonly.

  指定變量為只讀,執(zhí)行后,改變量不能被再次賦值,用法為:

  readonly name

  2.位置變量或Shell參數(shù)

  Bash Shell在解釋用戶命令時(shí),將把命令行的第一個(gè)子作為命令,而其它字作為

  參數(shù)通過(guò)位置變量傳遞給程序.$1,...,$9分別代表第一,...,九個(gè)參數(shù).其中1-9

  是真正的參數(shù)名,"$"符只是用來(lái)標(biāo)識(shí)變量的替換.

  位置變量$0指命令對(duì)應(yīng)的可執(zhí)行名.

  其它的還有:

  $# 送給命令的參數(shù)個(gè)數(shù)

  $@ 所有的參數(shù),每個(gè)用雙括號(hào)括起

  $* 所有的參數(shù),用雙括號(hào)括起

  3.與Shell有關(guān)的變量

  (1) Shell自身設(shè)置的一些常用變量:

  LINENO 正在執(zhí)行的命令在腳本中的行號(hào)

  PWD 用戶當(dāng)前目錄的全名

  OLDPWD 最近一次執(zhí)行cd之前,用戶當(dāng)前目錄的全名

  PPID 父進(jìn)程ID

  $ 當(dāng)前進(jìn)程ID

  RANDOM 隨機(jī)數(shù)(范圍0-32767)

  SECONDS Bash Shell的運(yùn)行時(shí)間,單位是秒

  REPLY select和read命令使用,以后會(huì)講到

  OPTARG

  ORTIND 這兩個(gè)變量由getopt命令設(shè)置

  UID 當(dāng)前用戶的User ID

  _ 上一條命令使用的最后一個(gè)參數(shù)

  (2) 影響Shell行為的一些常用環(huán)境變量:

  PATH 命令搜索路徑,以冒號(hào)為分隔符.注意與DOS下不同的是,

  當(dāng)前目錄不在系統(tǒng)路徑里

  HOME 用戶home目錄的路徑名,是cd命令的默認(rèn)參數(shù)

  COLUMNS 定義了命令編輯模式下可使用命令行的長(zhǎng)度

  EDITOR 默認(rèn)的行編輯器

  VISUAL 默認(rèn)的可視編輯器

  FCEDIT 命令fc使用的編輯器

  HISTFILE 命令歷史文件

  HISTSIZE 命令歷史文件中最多可包含的命令條數(shù)

  HISTFILESIZE 命令歷史文件中包含的最大行數(shù)

  IFS 定義SHELL使用的分隔符

  LOGNAME 用戶登錄名

  MAIL 指向一個(gè)需要SHELL監(jiān)視其修改時(shí)間的文件.當(dāng)該文件修改后,

  SHELL將發(fā)消息You hava mail給用戶

  MAILCHECK SHELL檢查MAIL文件的周期,單位是秒

  MAILPATH 功能與MAIL類似.但可以用一組文件,以冒號(hào)分隔,每個(gè)文件后

  可跟一個(gè)問(wèn)號(hào)和一條發(fā)向用戶的消息

  SHELL SHELL的路徑名

  TERM 終端類型

  TMOUT SHELL自動(dòng)退出的時(shí)間,單位為秒,若設(shè)為0則禁止SHELL自動(dòng)退出

  PROMPT_COMMAND 指定在主命令提示符前應(yīng)執(zhí)行的命令

  PS1 主命令提示符

  PS2 二級(jí)命令提示符,命令執(zhí)行過(guò)程中要求輸入數(shù)據(jù)時(shí)用

  PS3 select的命令提示符

  PS4 調(diào)試命令提示符

  MANPATH 尋找手冊(cè)頁(yè)的路徑,以冒號(hào)分隔

  LD_LIBRARY_PATH 尋找?guī)斓穆窂?以冒號(hào)分隔

  bash變量賦值

  例子:經(jīng)常在configure腳本中,會(huì)出現(xiàn)以下類似的語(yǔ)句,都表示什么意思呢?

  if test -n "${ZSH_VERSION set}"; then

  ac_env_build_alias_set=${build_alias set}

  test "${ac_configure_args0 set}" != set

  答案及擴(kuò)展:

變量賦值方式

str 沒(méi)有賦值

str 為空字符串

str 為非空字符串

備注

var=${str-expr} var=expr var=$str 對(duì)var進(jìn)行設(shè)置
var=${str expr} var=$str var=expr 對(duì)var進(jìn)行設(shè)置,varstr要不都取值,要不都不取值。雖然取值不同
var=${str=expr} str=expr
var=expr
str 不變
var=$str
對(duì)varstr進(jìn)行設(shè)置,

var str保持一致

var=${str?expr} expr 輸出至 stderr var=str 對(duì)var進(jìn)行設(shè)置
var=${str:-expr} var=expr var=$str  
var=${str: expr} var= var=expr  
var=${str:=expr} str=expr
var=expr
str 不變
var=$str
 
var=${str:?expr} expr 輸出至 stderr

  Bash字符串的操作

  (一)字符串的替換

  (1)

  ${變量1/查找字符/替換字符}

  (說(shuō)明一下,這個(gè)操作中除了第一個(gè)參數(shù)是變量外其它兩個(gè)都是字符;還有一點(diǎn)就是這個(gè)操作并不是把“變量1”中的字符替換了,詳見(jiàn)例子)

  例:

  str1=abcABCabc123ABC

  echo ${str1/bcA/aaa}#這里的abc和aaa都是字符串,而str1是變量,并且這個(gè)操作過(guò)后str1里的字符串長(zhǎng)度不會(huì)減少,只是產(chǎn)生了一個(gè) 新的字串。

  (2)

  ${變量1/#查找字符/替換字符}

  (說(shuō)明一下,這個(gè)操作上和面的是一樣的,只不過(guò)是從左邊開(kāi)始匹配,并且必須從左邊第一個(gè)字符開(kāi)始)

  例:

  echo ${str1/#bcA/aaa}#這個(gè)例子中并不會(huì)把bcA換成aaa因?yàn)閎不是左邊第一個(gè)開(kāi)頭字符

  echo ${str1/#abc/aaa}#這樣才行

  (3)

  ${變量1/%查找字符/替換字符}

  (與(2)相反,是結(jié)尾最后一個(gè)字符要匹配才行)

  例:

  echo ${str1/:BC/aaa}#abcABCabc12aaa

  (3)

  ${變量1//查找字符/替換字符}

  全部替換

  (二)取子串

  (1)${變量1:位置}

  (說(shuō)明一下,默認(rèn)是從左邊開(kāi)始,如果“位置”為負(fù)數(shù),則是從右邊的第“位置”個(gè)字符開(kāi)始,并且第一個(gè)位置為0;從“位置”開(kāi)始取子串到最后)

  例:

  str1=abcABCabc123ABC

  echo ${str1:(-3)}#會(huì)輸出ABC

  (2)${變量1:開(kāi)始位置:結(jié)束位置}

  (3)如果“變量1”為“*”或“@”,“位置”所表示的是第幾個(gè)參數(shù)。

  (三)字符串移動(dòng)

  (1)${字串#匹配字串}

  (說(shuō)明一下,這個(gè)是從左邊第一個(gè)開(kāi)始匹配,剝?nèi)プ疃?ldquo;匹配字串”)

  例:

  str1=abcABCabc123

  echo ${str1#a*c}#輸出ABCabc123

  (2)${字串##匹配字串}

  (說(shuō)明一下,這個(gè)是從左邊第一個(gè)開(kāi)始匹配,剝?nèi)プ铋L(zhǎng)“匹配字串”)

  str1=abcABCabc123

  echo ${str1#a*c}#輸出123

  echo ${str1#b*c}#輸出abcABCabc123,因?yàn)闆](méi)有從第一個(gè)開(kāi)始匹配

  (3)${字串%匹配字串}

  (4)${字串%%匹配字串}

  (說(shuō)明一下,這與上面的(1)(2)是正好相反的,是從最后一個(gè)開(kāi)始匹配的)

  (四)字符串長(zhǎng)度

  ${#字串}

  例:

  str=abcdefg

  echo ${#str}#輸出7

【linux shell編程變臉賦值和字符串操作】相關(guān)文章:

Linux shell常用命令匯總10-26

Linux系統(tǒng)shell工具打印輸出08-16

Linux Shell文本處理工具10-08

Linux認(rèn)證操作技巧10-10

Linux操作試題及答案08-01

Linux中常用操作命令10-17

Linux操作系統(tǒng)概述06-22

數(shù)控車(chē)床編程與操作08-21

《PHP字符串操作》收集整理08-08

Linux認(rèn)證基礎(chǔ)知識(shí):linux操作系統(tǒng)目錄結(jié)構(gòu)07-10