1.11-變量有關內容

1.11

                  變量有關內容linux

內容:shell

1. 變量的介紹express

2. 變量的分類vim

3. awk計算bash

4. vim中編輯文本技巧ide

5. 定義變量spa

第1章 變量

1.1 什麼是變量    

lidao=1命令行

 

###祕籍server

藏經閣裏面的武功祕籍  書籍的名字 新版葵花寶典  ==== 變量名字 lidao blog

     查看 書籍  新版葵花寶典  ==== 查看變量裏面的內容  $lidao

                      向書籍 加入新的內容      ==== 向變量中放入內容    lidao=12       

[root@oldboyedu-39-nb scripts]# lidao=lidao.blog.51cto.com

[root@oldboyedu-39-nb scripts]# echo $lidao

lidao.blog.51cto.com

 

1.2 查看 $ ${}   修改 變量名字=.....   臨時

${}先後是兩部分,用於分隔        -------金庸新著

[root@oldboyedu-39-nb ~]# week=10

[root@oldboyedu-39-nb ~]# echo $week

10

[root@oldboyedu-39-nb ~]# echo $weekday   系統認爲weekday是個變量

[root@oldboyedu-39-nb ~]# echo ${week}day 全部用花括號括起來

10day

1.3 變量的分類:     

環境變量    普通變量    特殊變量($n   $0  $#  $?)

1.3.1 環境變量(全局變量)

env   只顯示全局變量

 

自定義環境變量   放入 /etc/profile  永久生效

  OLDBOY=blog.oldboyedu.com           建議全部環境變量名均爲大寫

export OLDBOY=blog.oldboyedu.com export命令定義變量,在哪裏shell都能用

圖片1.png 

運行腳本至關於換了條線路   ---在當前shell中新打開一個子shell

  永久生效      /etc/profile

[root@oldboyedu43-lnb scripts]# OLDBOY=10                   定義普通變量

[root@oldboyedu43-lnb scripts]# echo $OLDBOY                在當前shell讀取變量√√√√

10

[root@oldboyedu43-lnb scripts]# cat env.sh                  把普通變量寫進腳本

#!/bin/bash

echo $OLDBOY

[root@oldboyedu43-lnb scripts]# sh env.sh                   不能夠運行,腳本至關於又打開一個子shell

 

[root@oldboyedu43-lnb scripts]# sh -x env.sh                -x 顯示腳本運行過程

+ echo

[root@oldboy-gao oldboy]# source env.sh                    source能夠運行腳本中的普通變量

10

[root@oldboyedu43-lnb scripts]# env |grep OLDBOY            env查看系統存在的環境變量

[root@oldboyedu43-lnb scripts]# export OLDBOY=10            定義環境變量

[root@oldboyedu43-lnb scripts]# env |grep OLDBOY            env能夠查看

OLDBOY=10

[root@oldboyedu43-lnb scripts]# sh env.sh                   當前環境下任何子shell能夠運行變量

10

 

1.3.2 與用戶環境變量有關的文件 目錄

 1.全局環境變量配置文件

 /etc/profile/etc/bashrc/etc/profile.d/(用戶登陸到系統 會運行這個目錄下面的腳本或命令) 

 2.用戶環境變量配置文件          

 ~/.bash_profile~/.bashrc

3. /etc/profile.d /etc/motd 區別

/etc/motd       文件,寫啥顯示啥(大佛)

sl  小火車

cowsay     ×××牛

讓用戶登陸時運行cowsay命令

[root@oldboy-gao ~]# cat  /etc/profile.d/cowsay.sh     把命令寫進腳本放到/etc/profile.d目錄下

#!/bin/bash                                              

/usr/bin/cowsay 啦啦啦

[root@oldboy-gao ~]# chmod +x /etc/profile.d/cowsay.sh       給腳本x權限

[root@oldboy-gao ~]# ll /etc/profile.d/cowsay.sh

-rwxr-xr-x. 1 root root 47 Jan 13 06:35 /etc/profile.d/cowsay.sh

1.3.3 linux內置的環境變量  

shell經過環境變量來肯定登陸用戶名,命令路徑,終端類型,登陸目錄等

LANG  PATH  SHELL   UID    HOSTNAME

 

取消變量 unset  OLDBOY=1

1.3.4 局部變量 普通變量

gao=1 若是不用export,,直接定義          ---局部變量(普通變量)

[root@oldboy-gao ~]# sh /server/scripts/show.sh

                變量不能被執行由於在新的子shell

圖片2.png

 

1.3.5 命名規則

字母  數字  下劃線

數字不能打頭

   

小結:

1.sed 查找  刪除    替換    

            不刪除  不替換

2.精簡linux開機自啓動服務

3.shell-什麼是變量

4.分類-環境變量(全局)

5.如何創造一個環境變量 export     放在/etc/profile

6.普通變量-$  ${}   金庸新著          {金庸新}

 

1.4 awk計算

[root@oldboy-gao ~]# awk 'BEGIN{print 3+2,3-1}'

5 2

第一個里程碑:awk  -v  定義一些 awk本身用的變量  一個v定義一個變量

shell腳本中$1表示腳本的第一個參數

[root@oldboy-gao ~]# cat  /server/scripts/cal.sh          

#!/bin/bash

num1=$1

num2=$2

 

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1-n2}'

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1+n2}'

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1*n2}'

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1/n2}'

[root@oldboy-gao ~]# sh /server/scripts/cal.sh 1 2

-1

3

2

0.5

 

1.5 vim中快捷編輯文本技巧

1.5.1 vim批量編輯

操做方法:

1. 確保不是編輯模式

2. Ctrl +v 上下鍵選擇你要編輯的行

3. 按大寫I

4. 輸入內容

5. esc

1.5.2 vim批量刪除去

Ctrl +v 並選擇你要編輯的行

delete刪除

 

   

1.5.3 特殊的變量

 $1 --$數字     $#      $?

 $0  腳本的名字

 $#  腳本參數的個數

第二個里程碑:$1 $2   ---$數字

linux腳本中 $1 表示這個腳本的第一個參數   

腳本與命令行的橋樑 中介    使用腳本的時候  把命令的內容傳入到腳本中

[root@oldboy-gao ~]# cat /server/scripts/show.sh

#!/bin/bash

echo $1 $2

[root@oldboy-gao ~]# sh /server/scripts/show.sh

 

[root@oldboy-gao ~]# sh /server/scripts/show.sh a b

a b

 

:計算 1+2   

[root@oldboyedu-39-nb ~]# echo 1+2

1+2

[root@oldboyedu-39-nb ~]# echo 1+2|bc

3

[root@oldboyedu-39-nb ~]# echo $((1+2))

3

[root@oldboyedu-39-nb ~]# echo $((3+4))             兩個小括號

7

[root@oldboyedu-39-nb ~]# echo $((a+b))

0

##使用變量省事 方便

[root@oldboyedu-39-nb ~]# a=1

[root@oldboyedu-39-nb ~]# b=2

[root@oldboyedu-39-nb ~]# echo $((a+b))

3

能不能更簡便一些呢

[root@oldboyedu-39-nb ~]# cat /server/scripts/cal.sh

#!/bin/bash

a=$1                 a表明第一個參數

b=$2                 b表明第二個參數

echo $((a+b))            

 

[root@oldboyedu-39-nb ~]# sh /server/scripts/cal.sh a b  ###必須是數字

/server/scripts/cal.sh: line 4: a: expression recursion level exceeded (error token is "a")

[root@oldboyedu-39-nb ~]# sh /server/scripts/cal.sh 20 30000

30020

[root@oldboyedu-39-nb ~]# #sh /server/scripts/cal.sh 20  30000

[root@oldboyedu-39-nb ~]# ###                  $1  $2    空格分隔每一個參數

練習:

##要求:給cal2.sh腳本傳入三個參數 ,顯示三個參數相乘的結果

[root@oldboyedu-39-nb ~]# sh /server/scripts/cal2.sh 10 20 30

6000

[root@oldboyedu-39-nb ~]# cat /server/scripts/cal2.sh

#!/bin/bash

a=$1

b=$2

c=$3

echo $((a*b*c))

 

第三個里程碑:$#   表示你這個腳本一共有多少個參數 參數的個數

用這個腳本文件show.sh

[root@oldboyedu-39-nb scripts]# cat show.sh

#!/bin/bash

echo $1 $2  $3

echo $#

[root@oldboyedu-39-nb scripts]# sh show.sh a b c

a b c

3                                                  輸出參數的個數

[root@oldboyedu-39-nb scripts]# sh show.sh a b c b d df ef d

a b c

8

 

第四個里程碑: $?   顯示上一個命令是否執行成功  若是命令執行成功 會顯示0   若是命令執行失敗,則會顯示不是0

若是是0,成功   若是不是0就失敗了。

[root@oldboyedu-39-nb scripts]# echo hello

hello

[root@oldboyedu-39-nb scripts]# echo $?

0

[root@oldboyedu-39-nb scripts]# echo hello

[root@oldboyedu-39-nb scripts]# ho hello

-bash: ho: command not found

[root@oldboyedu-39-nb scripts]# echo $?

127

 

小結

###$1 $2 {$數字  $# } (通常放腳本里)    $? (哪均可以)  含義

第五個里程碑:$0     顯示文件名

第2章 定義變量(如何向變量中放內容)

1) name=      普通變量

2) read  從命令行讀取內容放到變量中

  -p  提示語句 , 則屏幕就會輸出提示語句

  -t   等待時間

  -s   關閉回顯,用於密碼輸入

效果: read -p 請輸入你的用戶名  user

     read -s -p 請輸入你的密碼  pass

[root@oldboy-gao ~]# read oldboy

lalala                               倆個命令效果相同

[root@oldboy-gao ~]# oldboy=lalal

 

[root@oldboyedu-39-nb scripts]# read -p "please input :" oldboy      編輯提示信息

please input :oldboyedu.com                       變量    

[root@oldboyedu-39-nb scripts]# echo $oldboy

oldboyedu.com

實例2-1 cal.sh腳本從$1 $2參數傳遞方式 改成 使用read命令方式(必需要會)

[root@oldboy-gao oldboy]# cat /server/scripts/cal.sh

#!/bin/bash

read -t5 -p "input n1 n2:" num1 num2    

               -p 參數  放最後面

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1-n2}'

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1+n2}'

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1*n2}'

awk -vn1=$num1 -vn2=$num2 'BEGIN{print n1/n2}'

[root@oldboy-gao oldboy]# sh /server/scripts/cal.sh

input n1 n2: 100 22

78

122

2200

4.54545

相關文章
相關標籤/搜索