久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Shell腳本系列-shell入門第二講

1、普通環境變量與臨時環境變量

1.1、定義普通環境變量

[root@localhost ~]# VAR=value

注意:左邊的VAR是我們定義的一個變量名,右邊則是一個值,我們通過把值賦值給一個變量,從而達到引用一個變量就相當于引用值的目的。一般上而言定義一個變量名也有命令法則,如下所示:

(1)、不能使用程序中的保留字,如if、while、for、print等字符串作為變量名

(2)、只能使用數字、字母、下劃線,可以組合使用,但不能以數字開頭

(3)、最好做到見名知意(建議這樣子來做)

1.2、定義臨時環境變量

[root@localhost ~]# export VAR=value

用法是一樣的,只是我們這里加上了一個export,普通環境變量和臨時環境變量的區別就是:普通環境變量只在當前的shell終端有效,而臨時環境變量則是在當前shell終端以及當前shell的子終端中有效。

1.3、變量引用

直接使用$VAR即可,比如下面這樣,就可以把$VAR的值給打印出來。

[root@localhost ~]# echo $VAR

2、操作一下看看效果

[root@localhost ~]# tty

/dev/pts/0

[root@localhost ~]# ps axjf | grep pts/0

PPID ??PID ?PGID ??SID TTY ?????TPGID STAT ??UID ??TIME COMMAND

1016 36123 36123 36123 ? ??????????-1 Ss ??????0 ??0:01 ?\_ sshd: root@pts/0

36123 36125 36125 36125 pts/0 ???33060 Ss ??????0 ??0:00 ?| ??\_ -bash

36125 33060 33060 36125 pts/0 ???33060 R+ ??????0 ??0:00 ?| ??????\_ ps axjf

36125 33061 33060 36125 pts/0 ???33060 S+ ??????0 ??0:00 ?| ??????\_ grep --color=auto pts/0

可以看到當前使用的終端是偽終端類型,序號為 pts/0。我們通過這個命令中,主要關注PPID、PID、COMMAND這三列,其中PPID表示父進程,PID表示子進程,COMMAND表示當前父進程執行的命令,

可以看出來當 SSH 連接 Shell 時,當前終端 PPID(-bash)是 sshd 守護程序的 PID(pts/0),因此在當前終端下的所有進程的 PPID 都是-bash 的 PID(大家看到倒數第二行中PID號為36125,他是bash進程的PID號,而我們執行的ps命令和grep命令則是的PPID都是36125,這說明ps和grep都是-bash的子進程),比如執行命令、運行腳本。

所以當在-bash 下設置的變量,只在-bash 進程下有效,而-bash 下的子進程 bash 是無效的,如果要在子進程中生效需要你使用export,這樣才有效

例如:

[root@localhost ~]# NUM=666

[root@localhost ~]# echo $NUM

666

[root@localhost ~]# bash ??????? ## 此時我又進入了子shell中

[root@localhost ~]# echo $NUM ?? ## 發現是空值

然后我使用export定義一下

[root@localhost ~]# unset NUM ## 先接觸一下環境變量,重新定義

[root@localhost ~]# export NUM=888

[root@localhost ~]# echo $NUM

888

[root@localhost ~]# bash ????? ## 此時我又進入了子shell中

[root@localhost ~]# echo $NUM ## 子shell中也是可以使用這個值的

888

當然,上面的export例子也僅僅是對當前的終端以及子shell終端有效,如果你重新開一個新的終端,就不會生效了。比如之前我們使用的是pts/0,現在重新開的窗口,其終端是 pts/1,那么pts/1這個終端中就沒辦法使用在pts/0中定義的變量了。

[root@localhost ~]# tty

/dev/pts/2

[root@localhost ~]# echo $NUM

此外,shell腳本也是相當于起了一個子shell終端,因此我們在命令行中定義的NUM變量,即便在shell腳本中也是有效的,比如我們還是在pts/0這個終端上舉例子:

[root@localhost ~]# tty

/dev/pts/0

[root@localhost ~]# cat bash.sh

#!/bin/bash

echo $NUM

[root@localhost ~]# bash bash.sh

666

聲明:文章來源于網絡,如有侵權請聯系刪除!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 施甸县| 永兴县| 佛冈县| 奉节县| 内江市| 莱州市| 阜康市| 绥化市| 吐鲁番市| 孟州市| 公安县| 古田县| 林口县| 吕梁市| 六枝特区| 伊春市| 曲水县| 常山县| 德昌县| 岢岚县| 祥云县| 门源| 五台县| 宁远县| 镇远县| 崇礼县| 肇州县| 湖州市| 辉南县| 龙江县| 灌南县| 鄂尔多斯市| 苗栗市| 普兰县| 电白县| 临漳县| 营山县| 新昌县| 上高县| 鱼台县| 建昌县|