Shell part1.1變量類型

shell 變量是用一個(gè)固定的字符串去表示不固定的內(nèi)容,便于修改。

==變量類型==

自定義變量? 環(huán)境變量? ? 位置變量和預(yù)定義變量



=自定義變量=

A. 特性

1. 自定義變量(示例:ping01.sh引入變量)

定義變量: 變量名=變量值 變量名必須以字母或下劃線開(kāi)頭,區(qū)分大小寫(xiě) ip1=192.168.2.115

引用變量: $變量名 或 ${變量名}

查看變量: echo $變量名; "set"可以查看所有變量(包括自定義變量和環(huán)境變量)

取消變量: unset 變量名

作用范圍:

僅在當(dāng)前shell中有效

B. 示例:

使用變量前。麻煩

ping -c1 192.168.100.10 &>/dev/null? && echo 192.168.100.10up || echo 192.168.100.10down

使用變量后,簡(jiǎn)潔

#!/bin/bash

ip=192.168.100.10

ping -c1 $ip &>/dev/null? && echo $ip? up ||? echo "$ip? down"

C. 變量賦值(定義變量):

1. 顯式賦值:變量名=變量值

示例:

ip1=192.168.1.251

school="BeiJing 1000phone"

today1=`date +%F`

today2=$(date +%F)

2. read 從鍵盤(pán)讀入變量值

read 變量名

read -p "提示信息: " 變量名

read -t 5 -p "提示信息: " 變量名? //-t 等待5秒,后超時(shí)

read -n 2 變量名? ? ? ? ? ? //-n? 只記錄幾個(gè)字符

示例:

read -p "請(qǐng)輸入您測(cè)試的IP地址:" ip

ping -c1 $ip? &>/dev/null? && echo? " $ip up" || echo? "$ip? down"



=環(huán)境變量(了解)=

定義環(huán)境變量: 方法一 export back_dir2=/home/backup

方法二 export back_dir1 將自定義變量轉(zhuǎn)換成環(huán)境變量

引用環(huán)境變量: $變量名 或 ${變量名}

查看環(huán)境變量: echo $變量名 env 例如env |grep back_dir2

取消環(huán)境變量: unset 變量名

變量作用范圍: 在當(dāng)前shell和子shell有效 !!!

使變量開(kāi)機(jī)、登陸生效,將變量放到~/.bash_profile

永久生效:寫(xiě)到四個(gè)登錄腳本,/etc/profile ~/.baserc ~/.bash_profile /etc/bashrc



=位置變量和預(yù)定義變量(了解)=

語(yǔ)法命令? ? 參數(shù)1 參數(shù)2 參數(shù)3 ....9以后特殊定義

$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ...

預(yù)先定義過(guò)的變量

$0 腳本名

$* 所有的參數(shù)

$@ 所有的參數(shù)

$# 參數(shù)的個(gè)數(shù)

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

$! 上一個(gè)后臺(tái)進(jìn)程的PID

$? 上一個(gè)命令的返回值 0表示成功

示例

準(zhǔn)備工作:

# vim test.sh

#!/usr/bin/bash

echo "第2個(gè)位置參數(shù)是$2"

echo "第1個(gè)位置參數(shù)是$1"

echo "第4個(gè)位置參數(shù)是$4"

echo "所有參數(shù)是: $*"

echo "所有參數(shù)是: $@"

echo "參數(shù)的個(gè)數(shù)是: $#"

echo "當(dāng)前進(jìn)程的PID是: $$"

echo '$1='$1

echo '$2='$2

echo '$3='$3

echo '$*='$*

echo '$@='$@

echo '$#='$#

echo '$$='$$

演示結(jié)果如下:

[root@localhost ~]# chmod +x test.sh

[root@localhost ~]# ./1.sh? 1 2 3 4 5 6 7 8 9

第2個(gè)位置參數(shù)是2

第1個(gè)位置參數(shù)是1

第4個(gè)位置參數(shù)是4

所有參數(shù)是: 1 2 3 4 5 6 7 8 9

所有參數(shù)是: 1 2 3 4 5 6 7 8 9

參數(shù)的個(gè)數(shù)是: 9

當(dāng)前進(jìn)程的PID是: 1946

$1=1

$2=2

$3=3

$*=1 2 3 4 5 6 7 8 9

$@=1 2 3 4 5 6 7 8 9

$#=9

$$=1946



$*和$@區(qū)別(資料)

shell中$*與$@的區(qū)別

關(guān)于$* 和 $@的 一點(diǎn) 認(rèn)識(shí) 同是菜鳥(niǎo)一起學(xué)習(xí)

$*? 所有的位置參數(shù),被作為一個(gè)單詞.

注意:"$*"必須被“”引用.

$@ 與$*同義,但是每個(gè)參數(shù)都是一個(gè)獨(dú)立的""引用字串,

這就意味著參數(shù)被完整地傳遞,并沒(méi)有被解釋和擴(kuò)展.這也意味著,每個(gè)參數(shù)列表中的每個(gè)參數(shù)都被當(dāng)成一個(gè)獨(dú)立的單詞.

注意:"$@"必須被“”引用.

$@ $* 只在被雙引號(hào)包起來(lái)的時(shí)候才會(huì)有差異

雙引號(hào)括起來(lái)的情況:

$*將所有的參數(shù)認(rèn)為是一個(gè)字段

$@以IFS(默認(rèn)為空格)來(lái)劃分字段,如果空格在“”里面,不劃分。采用LS的腳本運(yùn)行./test 1 "2 3" 4? 來(lái)發(fā)現(xiàn)差異

沒(méi)有括起來(lái)的情況是$@和$*一樣的,見(jiàn)到IFS就劃分字段。還是采用LS的腳本運(yùn)行./test 1 "2 3" 4? 來(lái)發(fā)現(xiàn)差異



一個(gè)小例子 ,僅供參考

[Copy to clipboard] [ - ]CODE:#!/bin/bash

echo

index=1

echo "Listing args with\"\$*\":"

for arg in "$*"

do

echo "Arg #$index=$arg"

let "index+=1"

done

echo "所有的參數(shù)被認(rèn)為是一個(gè)單詞"

echo

index=1

echo "Listing args with \"\$@\":"

for arg in "$@"

do

echo "Arg #$index=$arg"

let "index+=1"

done

echo "所有的參數(shù)被認(rèn)為是各個(gè)獨(dú)立的單詞"

echo

index=1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見(jiàn)命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,537評(píng)論 1 19
  • Nginx 的配置文件使用的就是一門(mén)微型的編程語(yǔ)言,許多真實(shí)世界里的 Nginx 配置文件其實(shí)就是一個(gè)一個(gè)的小程序...
    SkTj閱讀 4,428評(píng)論 0 7
  • 一、基礎(chǔ)語(yǔ)法: 1.批處理文件是一個(gè)“.bat”結(jié)尾的文本文件,這個(gè)文件的每一行都是一條DOS命令??梢允褂萌魏挝?..
    蔣_Sir閱讀 9,388評(píng)論 1 4
  • 今天看到三公字評(píng)論里有人說(shuō)了這句話。 糾結(jié)于墻內(nèi)的所有弊端已經(jīng)很久了,各種無(wú)可奈何無(wú)時(shí)無(wú)刻不在攪動(dòng)著我的心弦,看了...
    逆水八爪魚(yú)閱讀 183評(píng)論 0 1
  • 步杜甫[秋興八首]之二 云雨三星朗月斜,步罡踏斗借精華。 乾坤浩大真賓館,步履匆忙本客槎。 浪涌翩然起海嘯,詩(shī)存厚...
    日升月恒325閱讀 228評(píng)論 1 1

友情鏈接更多精彩內(nèi)容