中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

自建個(gè)人網(wǎng)站怎么自己創(chuàng)建一個(gè)網(wǎng)頁(yè)

自建個(gè)人網(wǎng)站,怎么自己創(chuàng)建一個(gè)網(wǎng)頁(yè),美國(guó)地址生成器在線,企業(yè)網(wǎng)站搭建項(xiàng)目概述范文目錄 1.Shell腳本基礎(chǔ) 1.1Shell概述 1.2Shell腳本應(yīng)用場(chǎng)景 1.3Linux中常見(jiàn)的Shell 1.4Shell的作用 2.腳本的構(gòu)成 2.1編寫(xiě)腳本 2.2執(zhí)行腳本 2.2.1使用路徑執(zhí)行(需要加執(zhí)行權(quán)限) 2.2.2直接使用解釋器(不需要加執(zhí)行權(quán)限) …

目錄

1.Shell腳本基礎(chǔ)

1.1Shell概述

1.2Shell腳本應(yīng)用場(chǎng)景

1.3Linux中常見(jiàn)的Shell

1.4Shell的作用

2.腳本的構(gòu)成

2.1編寫(xiě)腳本

2.2執(zhí)行腳本

2.2.1使用路徑執(zhí)行(需要加執(zhí)行權(quán)限)

2.2.2直接使用解釋器(不需要加執(zhí)行權(quán)限)

2.2.3source和" . "執(zhí)行(不需要加執(zhí)行權(quán)限)——不推薦(會(huì)影響環(huán)境變量)

2.2.4腳本錯(cuò)誤調(diào)試

2.2.5延伸

3.重定向和管道符

3.1重定向

3.1.1延伸

3.2多行重定向

3.3管道符

4.特殊符號(hào)

5.變量

5.1變量的作用

5.2命名要求

5.3定義變量

5.4只讀變量

5.5自定義變量(約等于別名)

5.6變量追加值(+=)

5.7交互的定義變量

5.8變量作用范圍

6.整數(shù)運(yùn)算

6.1expr——只能進(jìn)行整數(shù)運(yùn)算(乘*需要加轉(zhuǎn)義\)

6.2bc計(jì)算器——交互式的進(jìn)行算數(shù)(支持非整數(shù))

6.3let——只支持整數(shù)運(yùn)算

6.4((num=x+x))——支持整數(shù)運(yùn)算

6.5sum=$[x*x]——支持整數(shù)運(yùn)算

6.6延伸——變量的運(yùn)算

7.RANDOM——隨機(jī)數(shù)生成器

7.1延伸

8.修改顏色

8.1顏色修改

8.2隨機(jī)顏色

8.3延伸——打印當(dāng)前系統(tǒng)信息

9.環(huán)境變量

?10.位置變量

11.預(yù)定義變量

12.延伸——()和{}


前言

程序編程風(fēng)格

面向過(guò)程語(yǔ)言? ?開(kāi)發(fā)的時(shí)候 需要 一步一步 執(zhí)行

  • 做一件事情,排出個(gè)步驟,第一步干什么,第二步干什么,如果出現(xiàn)情況A,做什么處理,如果出現(xiàn)了情況B,做什么處理
  • 問(wèn)題規(guī)模小,可以步驟化,按部就班處理
  • 以指令為中心,數(shù)據(jù)服務(wù)于指令
  • C,shell

面向?qū)ο笳Z(yǔ)言? ?開(kāi)發(fā)的 時(shí)候 將 任務(wù) 當(dāng)成一個(gè)整體

  • 將編程看成是一個(gè)事物,對(duì)外界來(lái)說(shuō),事物是直接使用的,不用關(guān)心事物內(nèi)部的情況。而編程就是設(shè)置事物能夠完成功能。
  • 一種認(rèn)識(shí)世界、分析世界的方法論。將萬(wàn)事萬(wàn)物抽象為各種對(duì)象
  • 類是抽象的概念,是萬(wàn)事萬(wàn)物的抽象,是一類事物的共同特征的集合
  • 對(duì)象是類的具象,是一個(gè)實(shí)體
  • 問(wèn)題規(guī)模大,復(fù)雜系統(tǒng)
  • 以數(shù)據(jù)為中心,指令服務(wù)于數(shù)據(jù)
  • java,python,golang等 云 go k8個(gè)字母s 平臺(tái)

WIndows基本也都是面向?qū)ο蟮某绦? 只能看到結(jié)果

三種處理邏輯

順序執(zhí)行:程序按從上到下順序執(zhí)行

選擇執(zhí)行:程序執(zhí)行過(guò)程中,根據(jù)條件的不同,進(jìn)行選擇不同分支繼續(xù)執(zhí)行

循環(huán)執(zhí)行:程序執(zhí)行過(guò)程中需要重復(fù)執(zhí)行多次某段語(yǔ)句(已知次數(shù) 已知條件 死循環(huán))

1.Shell腳本基礎(chǔ)

1.1Shell概述

  • 將要執(zhí)行的命令按順序保存到一個(gè)文本文件
  • 給該文件可執(zhí)行權(quán)限
  • 可結(jié)合各種Shell控制語(yǔ)句以完成更復(fù)雜的操作

腳本是命令的集合;

將命令一一列出,最后自動(dòng)執(zhí)行;

執(zhí)行需要權(quán)限,也可以直接使用路徑;

Linux 系統(tǒng)中的 Shell 是一個(gè)特殊的應(yīng)用程序,它介于操作系統(tǒng)內(nèi)核與用戶之間,充當(dāng) 了一個(gè)“命令解釋器”的角色,負(fù)責(zé)接收用戶輸入的操作指令(命令)并進(jìn)行解釋,將需要執(zhí) 行的操作傳遞給內(nèi)核執(zhí)行,并輸出執(zhí)行結(jié)果。 常見(jiàn)的 Shell 解釋器程序有很多種,使用不同的 Shell 時(shí),其內(nèi)部指令、命令行提示符 等方面會(huì)存在一些區(qū)別。通過(guò)/etc/shells 文件可以了解當(dāng)前系統(tǒng)所支持的 Shell 腳本種類。

[root@localhost ~]#cat /etc/shells
#查看當(dāng)前系統(tǒng)支持的Shell
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

1.2Shell腳本應(yīng)用場(chǎng)景

  • 重復(fù)性操作
  • 交互性任務(wù)
  • 批量事務(wù)處理
  • 服務(wù)運(yùn)行狀態(tài)監(jiān)控
  • 定時(shí)任務(wù)執(zhí)行

重復(fù)性操作、定時(shí)任務(wù)執(zhí)行:腳本可以放到Crontab? -e定時(shí)計(jì)劃任務(wù)中執(zhí)行;

交互性任務(wù):腳本的目的是避免人機(jī)交互

批量事務(wù)處理:將要執(zhí)行的命令按順序保存到一個(gè)文本文件進(jìn)行批量操作

服務(wù)運(yùn)行狀態(tài)監(jiān)控:例如過(guò)濾80端口的httpd服務(wù)

1.3Linux中常見(jiàn)的Shell

  • bash:基于gun的框架下發(fā)展的shell
  • csh:類似c語(yǔ)言的shell
  • tcsh:整合了csh提供了更多功能
  • sh:已經(jīng)被bash替換
  • nologin:讓用戶無(wú)法登錄

bash (/bin/bash)是目前大多數(shù)Linux 版本采用的默認(rèn)shell

1.4Shell的作用

  • Shell的作用——命令解釋器,“翻譯官”
  • 介于系統(tǒng)內(nèi)核與用戶之間,負(fù)責(zé)解釋命令行

用戶登錄的Shell

  • 登錄后默認(rèn)使用的Shell程序,一般為/bin/bash
  • 不同Shell的內(nèi)部指令、運(yùn)行環(huán)境等會(huì)有所區(qū)別

2.腳本的構(gòu)成

編寫(xiě)腳本代碼

  • 使用vim文本編輯器
  • 每行一條Linux命令,按執(zhí)行順序依次編寫(xiě)
[root@localhost ~]#vim test.sh#!/bin/bash
cd /opt
pwd
touch cxk[root@localhost ~]#bash test.sh 
/opt
[root@localhost ~]#ls /opt
cxk  rh

賦予可執(zhí)行權(quán)限

  • 使腳本具有可執(zhí)行權(quán)限
[root@localhost ~]#chmod +x test.sh 
[root@localhost ~]#ll test.sh 
-rwxr-xr-x 1 root root 34 1月  22 14:36 test.sh

總結(jié)

  • 腳本申明(解釋器):第一行開(kāi)頭“#! /bin/bash”表示此行以下的代碼語(yǔ)句是通過(guò)/bin/bash程序來(lái)解釋執(zhí)行。#! /bin/bash為默認(rèn)的解釋器還有其他類型的解釋器(例如還有#! /bin/python? ? ?#! /bin/expece? 代碼語(yǔ)句)
  • 注釋信息:以#開(kāi)頭的語(yǔ)句表示為注釋信息? ? #代表注釋
  • 可執(zhí)行語(yǔ)句:比如echo、ls、touch等命令用于輸出“? ” 之間的字符串

2.1編寫(xiě)腳本

[root@localhost ~]#vim test.sh#!/bin/bash#這是我的第一個(gè)腳本echo "hello world"[root@localhost ~]#bash test.sh 
hello world

2.2執(zhí)行腳本

2.2.1使用路徑執(zhí)行(需要加執(zhí)行權(quán)限)

[root@localhost /]#/test.sh
#絕對(duì)路徑
hello world
[root@localhost /]#./test.sh
#相對(duì)路徑
hello world

2.2.2直接使用解釋器(不需要加執(zhí)行權(quán)限)

[root@localhost ~]#bash test.sh 
hello world

2.2.3source和" . "執(zhí)行(不需要加執(zhí)行權(quán)限)——不推薦(會(huì)影響環(huán)境變量)

[root@localhost ~]#. test.sh 
hello world
[root@localhost ~]#source test.sh 
hello world
[root@localhost ~]#ll test.sh 
-rwxr-xr-x 1 root root 62 1月  22 14:51 test.sh

如果使用bash或者路徑執(zhí)行腳本,會(huì)開(kāi)啟子bash環(huán)境去執(zhí)行腳本;使用source和 . 執(zhí)行腳本 會(huì)影響當(dāng)前的bash環(huán)境;

腳本執(zhí)行結(jié)束后會(huì)結(jié)束;

如果想補(bǔ)全腳本的話? 可以通過(guò)軟連接的方式,ln -s

2.2.4腳本錯(cuò)誤調(diào)試

腳本執(zhí)行邏輯

  • 順序執(zhí)行:程序按從上到下順序執(zhí)行
  • 選擇執(zhí)行:程序執(zhí)行過(guò)程中,根據(jù)條件的不同,進(jìn)行選擇不同分支繼續(xù)執(zhí)行
  • 循環(huán)執(zhí)行:程序執(zhí)行過(guò)程中需要重復(fù)執(zhí)行多次某段語(yǔ)句

1.命令錯(cuò)誤

命令執(zhí)行如果錯(cuò)誤的話,不會(huì)影響接下來(lái)的命令執(zhí)行

[root@localhost ~]#vim test.sh#/bin/bashech "hello world"cd /opt
touch cxk[root@localhost ~]#bash test.sh 
test.sh:行3: ech: 未找到命令
[root@localhost ~]#cd /opt
[root@localhost opt]#ls
cxk

2.語(yǔ)法錯(cuò)誤

會(huì)影響接下來(lái)的命令繼續(xù)

[root@localhost ~]#vim test.sh 
#/bin/bashech "hello world"c /opt
touch cxk[root@localhost ~]#bash test.sh 
test.sh:行3: ech: 未找到命令
test.sh:行6: c: 未找到命令
[root@localhost ~]#ls /opt

3.邏輯錯(cuò)誤

如果邏輯錯(cuò)誤的話只能自己去篩查哪里出錯(cuò)

[root@localhost ~]#bash -x test.sh 
+ ech 'hello world'
test.sh:行3: ech: 未找到命令
+ c /opt
test.sh:行6: c: 未找到命令
+ touch cxk

bash -n 腳本名稱 (不在當(dāng)前目錄下加絕對(duì)路徑) ? ? 檢查語(yǔ)法錯(cuò)誤
bash -x 腳本名稱 (不在當(dāng)前目錄下加絕對(duì)路徑) ? ? 邏輯錯(cuò)誤

總結(jié)

1.語(yǔ)法錯(cuò)誤:會(huì)導(dǎo)致后續(xù)的命令不繼續(xù)執(zhí)行,可以用bash -n 檢查錯(cuò)誤,提示的出錯(cuò)行數(shù)不一定是準(zhǔn)確的

2.命令錯(cuò)誤:默認(rèn)后續(xù)的命令還會(huì)繼續(xù)執(zhí)行,用bash -n 無(wú)法檢查出來(lái) ,可以使用 bash -x 進(jìn)行觀察

3.邏輯錯(cuò)誤:只能使用 bash -x 進(jìn)行

2.2.5延伸

set -e

如果命令出錯(cuò),立即停止

[root@localhost ~]#vim test.sh#/bin/bashset -e
cd /op
rm -rf ./*[root@localhost ~]#bash test.sh 
test.sh: 第 4 行:cd: /op: 沒(méi)有那個(gè)文件或目錄

set -u

變量出錯(cuò),立即停止

[root@localhost ~]#vim test.sh#/bin/bashset -u
DIR=/opt
rm -rf $DIr/*[root@localhost ~]#bash test.sh 
test.sh:行5: DIr: 為綁定變量

3.重定向和管道符

3.1重定向

標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出

ls是標(biāo)準(zhǔn)輸入? 標(biāo)準(zhǔn)輸出是打印在當(dāng)前終端屏幕上的

類型設(shè)備文件文件描述編號(hào)默認(rèn)設(shè)備
標(biāo)準(zhǔn)輸入/dev/stdin0鍵盤(pán)
標(biāo)準(zhǔn)輸出/dev/stdout1顯示器
標(biāo)準(zhǔn)錯(cuò)誤輸出/dev/stderr2顯示器

交互式硬件設(shè)備

  • 標(biāo)準(zhǔn)輸入:從該設(shè)備接收用戶輸入的數(shù)據(jù)
  • 標(biāo)準(zhǔn)輸出:通過(guò)該設(shè)備向用戶輸出數(shù)據(jù)
  • 標(biāo)準(zhǔn)錯(cuò)誤:通過(guò)該設(shè)備報(bào)告執(zhí)行出錯(cuò)信息

重定向的意思就是 ,不輸出到默認(rèn)設(shè)備上,輸出到你指定的位置

類型操作符用途
重定向輸入<從指定的文件讀取數(shù)據(jù),而不是從鍵盤(pán)輸入
重定向輸出1>將輸出結(jié)果保存到指定的文件(覆蓋原有內(nèi)容)
>>將輸出結(jié)果追加到指定的文件尾部
標(biāo)準(zhǔn)錯(cuò)誤輸出2>將錯(cuò)誤信息保存到指定的文件(覆蓋原有內(nèi)容)
2>>標(biāo)準(zhǔn)錯(cuò)誤輸出結(jié)果追加到指定的文件尾部
混合輸出&>無(wú)論對(duì)錯(cuò)都可以重定向將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤的內(nèi)容保存到同一個(gè)文件中
[root@localhost ~]#ls /dev/pts/1
/dev/pts/1
#ls命令最終顯示到終端  標(biāo)準(zhǔn)重定向省略了1>[root@localhost ~]#xxx >/dev/pts/1
bash: xxx: 未找到命令...
#錯(cuò)誤重定向[root@localhost ~]#rm xxx.txt >/dev/pts/1
rm: 無(wú)法刪除"xxx.txt": 沒(méi)有那個(gè)文件或目錄
#錯(cuò)誤重定向
[root@localhost ~]#vim passwd.txt123321[root@localhost ~]#setenforce 0
setenforce: SELinux is disabled[root@localhost ~]#passwd --stdin ghd < passwd.txt 
更改用戶 ghd 的密碼 。
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
[root@localhost ~]#cat passwd.txt 
123321
[root@localhost ~]#echo "123321" > passwd.txt 
[root@localhost ~]#cat passwd.txt 
123321
[root@localhost ~]#ls > passwd.txt 
[root@localhost ~]#cat passwd.txt 
all.log
anaconda-ks.cfg
initial-setup-ks.cfg
passwd.txt
webmin-2.100-1.noarch.rpm
公共
模板
視頻
圖片
文檔
下載
音樂(lè)
桌面

3.1.1延伸

#不能將正確和錯(cuò)誤一起顯示出來(lái) 
[root@centos7 ~]#ls /data /xxx 1> /data/all.log 2>&1
[root@centos7 ~]#ls /data /xxx 2> /data/all.log 1>&2 
[root@centos7 ~]#ls /data /xxx &> /data/all.log  
[root@centos7 ~]#ls /data /xxx >& /data/all.log  [root@centos7 ~]#ls /data /xxx   2>&1 1> /data/all.log
#不可以顯示出來(lái)1代表 正確輸入
2代表 錯(cuò)誤輸入
&    代表混合

3.2多行重定向

Here Document 概述 使用 I/O 重定向的方式將命令列表提供給交互式程序或命令,比如 ftp、cat 或 read 命令。 HereDocument是標(biāo)準(zhǔn)輸入的一種替代品, 可以幫助腳本開(kāi)發(fā)人員不必使用臨時(shí)文件來(lái)構(gòu)建輸入信息, 而是直接就地生產(chǎn)出一個(gè)文件并用作命令的標(biāo)準(zhǔn)輸入。

[root@localhost opt]#wc -l <<EOF
123
321
eof
EOF
3[root@localhost opt]#cat > cxk.txt
#需要回車才可以寫(xiě)入
123
321
cxk
^C
[root@localhost opt]#ls
cxk.txt
[root@localhost opt]#ls cxk.txt 
cxk.txt
[root@localhost opt]#cat cxk.txt 
123
321
cxk[root@localhost opt]#cat >test.txt <<EOF
> 111
> 222
> 333
> cxk
> EOF
[root@localhost opt]#ls
cxk.txt  test.txt
[root@localhost opt]#cat test.txt 
111
222
333
cxk

3.3管道符

管道操作符號(hào)“ |?”

將左側(cè)的命令輸出結(jié)果,作為右側(cè)命令的處理對(duì)象

[root@localhost ~]#grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
ghd:x:1000:1000:ghd:/home/ghd:/bin/bash[root@localhost ~]#grep "bash$" /etc/passwd|awk -F: '{print $1,$7}'
root /bin/bash
ghd /bin/bash[root@localhost opt]# echo "123123" |passwd --stdin ghd
更改用戶 ghd 的密碼 。
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新

4.特殊符號(hào)

  1. 賦值時(shí)使用雙引號(hào)(" ")可以直接調(diào)用變量
  2. 賦值時(shí)使用單引號(hào)(' ')變量$只會(huì)被認(rèn)為是字符$ 不會(huì)調(diào)用變量
  3. 賦值時(shí)使用(``反撇在tab上面)命令替換,提取命令執(zhí)行后的輸出結(jié) 果 和$( ) 用法相同
  4. {}可以分隔變量值
雙引號(hào)弱引用可以識(shí)別變量
單引號(hào)強(qiáng)引用不能識(shí)別變量
{? }定義變量名的范圍
''(反撇)調(diào)用命令的執(zhí)行結(jié)果(? 反撇=$()? )
[root@localhost ~]#name=cxk
[root@localhost ~]#name1=wyq
[root@localhost ~]#echo $name1
wyq
[root@localhost ~]#echo name
name
[root@localhost ~]#echo $name
cxk
[root@localhost ~]#echo $name$name1
cxkwyq
[root@localhost ~]#echo ${name1}name
wyqname
#建議帶著{}弱引用  強(qiáng)引用
[root@localhost ~]#echo "$name1"
wyq[root@localhost ~]#echo '$name1'
$name1[root@localhost ~]#date
2024年 01月 23日 星期二 14:40:50 CST
[root@localhost ~]#date +%F
2024-01-23
[root@localhost ~]#touch `date +%F`
[root@localhost ~]#ls 2024-01-23 
2024-01-23[root@localhost ~]#df 
文件系統(tǒng)                   1K-塊    已用     可用 已用% 掛載點(diǎn)
/dev/mapper/centos-root 52403200 5265668 47137532   11% /
devtmpfs                  917604       0   917604    0% /dev
tmpfs                     933524       0   933524    0% /dev/shm
tmpfs                     933524    9208   924316    1% /run
tmpfs                     933524       0   933524    0% /sys/fs/cgroup
/dev/sda1                5232640  182368  5050272    4% /boot
tmpfs                     186708       0   186708    0% /run/user/0
tmpfs                     186708      12   186696    1% /run/user/42
[root@localhost ~]#df |grep sda
/dev/sda1                5232640  182368  5050272    4% /boot
[root@localhost ~]#df |grep sda|tr -s " "|cut -d" " -f5
4%
[root@localhost ~]#df |grep sda|tr -s " "|cut -d" " -f5|tr -d %
4
[root@localhost ~]#use=`df |grep sda|tr -s " "|cut -d" " -f5|tr -d %`
[root@localhost ~]#echo $use 
4[root@localhost ~]#name=root
[root@localhost ~]#grep '$name' /etc/passwd
[root@localhost ~]#grep ''$name'' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#grep '  ' $name ' ' /etc/passwd

5.變量

5.1變量的作用

用來(lái)存放系統(tǒng)和用戶需要使用的特定參數(shù)

  • 變量名:使用固定的名稱,由系統(tǒng)預(yù)設(shè)或用戶定義
  • 變量值:能夠根據(jù)用戶設(shè)置、系統(tǒng)環(huán)境的變化而變化

變量的類型

  • 自定義變量:由用戶自己定義、修改和使用
  • 特殊變量:環(huán)境變量,只讀變量,位置變量,預(yù)定義變量
[root@localhost ~]#a=wyq
[root@localhost ~]#echo $a
wyq
[root@localhost ~]#a=cxk
[root@localhost ~]#echo $a
cxk

常見(jiàn)的Shell變量的類型

  • 自定義變量:由用戶自己定義,修改和使用
  • 預(yù)定義變量:Bash中內(nèi)置的一類變量
  • 環(huán)境變量:由系統(tǒng)維護(hù),用于設(shè)置工作環(huán)境? 當(dāng)前目錄? 當(dāng)前主機(jī)名? $PATH
  • 只讀變臉:只可以讀取不可以更改
  • 位置變量:通過(guò)命令性給腳本傳遞參數(shù)

系統(tǒng)內(nèi)置變量:PATH,UID,HOSTNAME,USER

5.2命名要求

  • 區(qū)分大小寫(xiě)
  • 不能使程序中的保留字和內(nèi)置變量:如:if, for,hostname 命令 a=
  • 只能使用數(shù)字、字母及下劃線,且不能以數(shù)字開(kāi)頭,注意:不支持短橫線 “ - ”,和主機(jī)名相反
  • 不要使用內(nèi)置的變量,使用英文盡量使用詞義通俗易懂,PATH
  • 大駝峰 StudentFirstName
  • 小駝峰 studentFirstName
  • 下劃線 student_name

特殊符號(hào)

  • 賦值時(shí)使用雙引號(hào)(" ")可以直接調(diào)用變量(雙引號(hào) 弱引用 可以識(shí)別變量)
  • 賦值時(shí)使用單引號(hào)(' ')變量$只會(huì)被認(rèn)為是字符$ 不會(huì)調(diào)用變量(單引號(hào) 強(qiáng)引用 不能識(shí)別變量)
  • 賦值時(shí)使用(``反撇在tab上面)命令替換,提取命令執(zhí)行后的輸出結(jié) 果 和$( ) 用法相同(反撇 調(diào)用命令的執(zhí)行結(jié)果 反撇=$())
  • {}可以分隔變量值({ } 定義變量名的范圍)

5.3定義變量

  • 變量名=變量值

調(diào)用變量

  • echo $變量名

取消變量

  • unset 變量名
[root@localhost ~]#a=cxk
[root@localhost ~]#echo $a
cxk
[root@localhost ~]#unset a
[root@localhost ~]#echo $a

5.4只讀變量

[root@localhost ~]#name=wsc
[root@localhost ~]#echo $name
wsc
[root@localhost ~]#readonly name
[root@localhost ~]#name=cxk
-bash: name: 只讀變量
[root@localhost ~]#echo $name
wsc
[root@localhost ~]#unset name
-bash: unset: name: 無(wú)法反設(shè)定: 只讀 variable
[root@localhost ~]#reboot[root@localhost ~]#echo $name#重啟之后就會(huì)失效

5.5自定義變量(約等于別名)

定義一個(gè)新的變量

  • 變量名以字母或下劃線開(kāi)頭,區(qū)分大小寫(xiě),建議全大寫(xiě)
  • 變量名=變量值

查看變量值

  • echo $變量名
[root@localhost ~]#myls=ls
[root@localhost ~]#ls
anaconda-ks.cfg       webmin-2.100-1.noarch.rpm  模板  圖片  下載  桌面
initial-setup-ks.cfg  公共                       視頻  文檔  音樂(lè)
[root@localhost ~]#$myls
anaconda-ks.cfg       webmin-2.100-1.noarch.rpm  模板  圖片  下載  桌面
initial-setup-ks.cfg  公共			 視頻  文檔  音樂(lè)

5.6變量追加值(+=)

[root@localhost ~]#name=wyq
[root@localhost ~]#echo $name 
wyq
[root@localhost ~]#name+=cxk
[root@localhost ~]#echo $name
wyqcxk#修改環(huán)境變量
PATH+=:/data[root@localhost ~]#vim /etc/profile
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data"

5.7交互的定義變量

read -p交互式的輸入變量值

[root@localhost ~]#vim test.sh#/bin/bash
read -p "請(qǐng)輸入密碼:"  numberecho $number[root@localhost ~]#bash test.sh 
請(qǐng)輸入密碼:123
123[root@localhost ~]#vim test.sh#/bin/bash
read -p "請(qǐng)輸入ip地址檢測(cè)主機(jī)連通性:"  time
ping -c2 $time[root@localhost ~]#bash test.sh 
請(qǐng)輸入ip地址檢測(cè)主機(jī)連通性:192.168.241.11
PING 192.168.241.11 (192.168.241.11) 56(84) bytes of data.
64 bytes from 192.168.241.11: icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from 192.168.241.11: icmp_seq=2 ttl=64 time=0.089 ms--- 192.168.241.11 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.062/0.075/0.089/0.016 ms

5.8變量作用范圍

  • 默認(rèn)情況下,新定義的變量只在當(dāng)前的shell環(huán)境中有效,因此稱為局部變量,當(dāng)進(jìn)入子程序或新的shell環(huán)境中,局部變量將無(wú)法再起作用。
  • 可以通過(guò)內(nèi)部命令export將指定的變量為全局變量,使用戶定義的變量在所子shell環(huán)境中可以繼續(xù)使用

設(shè)置變量的作用范圍

方法

  • 格式1:export 變量名
  • 格式2:export 變量名=變量值

可以使用pstree 查看shell的環(huán)境;

輸入bash進(jìn)入子shell;

ctrl+D組合exit 退出子shel。

[root@localhost ~]#export name
[root@localhost ~]#echo $name 
wyqcxk
[root@localhost ~]#echo $Product $Version[root@localhost ~]#bash
[root@localhost ~]#pstree -p|grep bash|-sshd(980)---sshd(1631)---bash(1639)---bash(2370)-+-grep(2409)
[root@localhost ~]#env
XDG_SESSION_ID=1
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=192.168.241.1 53690 22
SSH_TTY=/dev/pts/0
USER=root
name=wyqcxk
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
MAIL=/var/spool/mail/root
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
HOME=/root
SHLVL=2
LOGNAME=root
SSH_CONNECTION=192.168.241.1 53690 192.168.241.11 22
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=localhost:10.0
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env[root@localhost ~]#exit[root@localhost ~]#env
XDG_SESSION_ID=7
HOSTNAME=localhost.localdomain
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.241.1 60953 22
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
SSH_CONNECTION=192.168.241.1 60953 192.168.241.11 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
DISPLAY=localhost:10.0
_=/usr/bin/env

可以在定義的時(shí)候加export

也可以在定義完之后 開(kāi)啟子環(huán)境之后再加export

6.整數(shù)運(yùn)算

6.1expr——只能進(jìn)行整數(shù)運(yùn)算(乘*需要加轉(zhuǎn)義\)

[root@localhost ~]#expr 1+2
1+2
[root@localhost ~]#expr 1 + 2
3
[root@localhost ~]#expr 5 - 2
3
[root@localhost ~]#expr 5 / 2
2
[root@localhost ~]#expr 5 * 2
expr: 語(yǔ)法錯(cuò)誤
[root@localhost ~]#expr 5 \* 2
10
[root@localhost ~]#expr 6 / 2
3

6.2bc計(jì)算器——交互式的進(jìn)行算數(shù)(支持非整數(shù))

[root@localhost ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1*6
6
2*5
10
1+5+95+5+
(standard_in) 4: syntax error
1+5+95+5
106
9/3
3
6.3+5.8+3.6
15.7

6.3let——只支持整數(shù)運(yùn)算

[root@localhost ~]#let sum=1+6
[root@localhost ~]#echo $sum
7
[root@localhost ~]#let sum=5*5
[root@localhost ~]#echo $sum 
25
[root@localhost ~]#let sum=6*3;echo $sum 
18

6.4((num=x+x))——支持整數(shù)運(yùn)算

[root@localhost ~]#((num=5+5))
[root@localhost ~]#((sum=1+2))
[root@localhost ~]#echo $sum
3
[root@localhost ~]#echo $num
10

6.5sum=$[x*x]——支持整數(shù)運(yùn)算

[root@localhost ~]#sum=$[5*5]
[root@localhost ~]#echo $sum
25
[root@localhost ~]#sum=$[9*6];echo $sum
54

建議使用let和sum$

[root@localhost ~]#let sum=1+9;echo $sum
10
[root@localhost ~]#sum=$[1+9];echo $sum
10

6.6延伸——變量的運(yùn)算

[root@localhost ~]#a=10
[root@localhost ~]#b=5
[root@localhost ~]#expr $a + $b
15
[root@localhost ~]#let sum=$a*$b;echo $sum
50
[root@localhost ~]#sum=$[a*b];echo $sum
50

7.RANDOM——隨機(jī)數(shù)生成器

[root@localhost ~]#man bashRANDOM 每次引用這個(gè)參數(shù)時(shí),都會(huì)產(chǎn)生一個(gè)        0        到         32767之間的隨機(jī)整數(shù)??梢酝ㄟ^(guò)向                                 RANDOM賦值來(lái)初始化隨機(jī)數(shù)序列。如果取消了                         RANDOM的定義,它就失去了特殊的意義,即使后來(lái)重新定義它。

RANDOM取值范圍是0-32767

[root@localhost ~]#echo $RANDOM 
13461
[root@localhost ~]#echo $RANDOM 
12383
[root@localhost ~]#echo $RANDOM 
22935
[root@localhost ~]#echo $RANDOM 
23980
[root@localhost ~]#echo $RANDOM 
27897
[root@localhost ~]#echo $RANDOM 
25217
[root@localhost ~]#echo $RANDOM 
2245

7.1延伸

[root@localhost ~]#echo $[RANDOM%10]
9
[root@localhost ~]#echo $[RANDOM%10]
5
[root@localhost ~]#echo $[RANDOM%10]
8
[root@localhost ~]#echo $[RANDOM%10]
6
[root@localhost ~]#echo $[RANDOM%10]
0
[root@localhost ~]#echo $[RANDOM%10]
9
[root@localhost ~]#echo $[RANDOM%10]
5#表示隨機(jī)生成小于10的數(shù)字   范圍是0-9[root@localhost ~]#echo $[RANDOM%10+1]
8
[root@localhost ~]#echo $[RANDOM%10+1]
8
[root@localhost ~]#echo $[RANDOM%10+1]
1
[root@localhost ~]#echo $[RANDOM%10+1]
1
[root@localhost ~]#echo $[RANDOM%10+1]
8
[root@localhost ~]#echo $[RANDOM%10+1]
8
[root@localhost ~]#echo $[RANDOM%10+1]
1
[root@localhost ~]#echo $[RANDOM%10+1]
7
[root@localhost ~]#echo $[RANDOM%10+1]
10
[root@localhost ~]#echo $[RANDOM%10+1]
10#表示隨機(jī)生成小于10的數(shù)字   范圍是1-10

8.修改顏色

8.1顏色修改

[root@localhost ~]#echo -e "\E[1;30mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;31mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;32mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;33mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;34mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;35mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;36mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;37mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;38mhello world\E[0m"
hello world

8.2隨機(jī)顏色

[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world
[root@localhost ~]#echo -e "\E[1;$[RANDOM%7+31]mhello world\E[0m"
hello world

8.3延伸——打印當(dāng)前系統(tǒng)信息

[root@localhost ~]#vim system_info.sh#/bin/bash
host=`ifconfig ens33|grep netmask|tr -s " "|cut -d " " -f3`
name=`hostname`
cpu=`lscpu|grep 型號(hào)名稱|tr -s " "|cut -d " " -f2-8`
test=`uname -r`
os=`cat /etc/redhat-release`
disk=`lsblk|grep disk|tr -s " "|cut -d " " -f4`
mem=`free -h|grep Mem|awk '{print $2}'`echo -e "\E[1;32m-------------system info-------------\E[0m"echo "主機(jī)名:   $name"
echo "IP地址:   $host"
echo "cpu型號(hào):  $cpu"
echo "內(nèi)核版本: $test"
echo "系統(tǒng)類型: $os"
echo "磁盤(pán)大小: $disk"
echo "內(nèi)存大小: $mem"echo -e "\E[1;36m-------------    end     -------------\E[0m"[root@localhost ~]#bash system_info.sh 
-------------system info-------------
主機(jī)名:   localhost.localdomain
IP地址:   192.168.241.11
cpu型號(hào):  Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
內(nèi)核版本: 3.10.0-693.el7.x86_64
系統(tǒng)類型: CentOS Linux release 7.4.1708 (Core) 
磁盤(pán)大小: 60G
內(nèi)存大小: 1.8G
-------------    end     -------------

小拓展

[root@localhost ~]#lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    1
座:                 2
NUMA 節(jié)點(diǎn):         1
廠商 ID:           GenuineIntel
CPU 系列:          6
型號(hào):              142
型號(hào)名稱:        Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
步進(jìn):              10
CPU MHz:             1990.571
BogoMIPS:            3984.00
超管理器廠商:  VMware
虛擬化類型:     完全
L1d 緩存:          32K
L1i 緩存:          32K
L2 緩存:           256K
L3 緩存:           8192K
NUMA 節(jié)點(diǎn)0 CPU:    0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat
[root@localhost ~]#lscpu |grep 型號(hào)名稱
型號(hào)名稱:        Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
[root@localhost ~]#lscpu |grep 型號(hào)名稱|tr -s " "|cut -d " " -f2
Intel(R)
[root@localhost ~]#lscpu |grep 型號(hào)名稱|tr -s " "|cut -d " " -f2-8
Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
[root@localhost ~]#lscpu |grep 型號(hào)名稱|tr -s " "|cut -d ":" -f2-8
型號(hào)名稱: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
[root@localhost ~]#lscpu |grep 型號(hào)名稱|tr -s " "|cut -d ":" -f2
型號(hào)名稱: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz

9.環(huán)境變量

  • 由系統(tǒng)提前創(chuàng)建,用來(lái)設(shè)置用戶的工作環(huán)境
  • 可以使用env查看環(huán)境變量
  • 需要記住的常用環(huán)境變量
  • 配置文件:/etc/profile、~/.bash_profile

/etc/profile如果修改此文件會(huì)作用于所有用戶

~/.bash_profile 用戶獨(dú)立的配置文件,修改這個(gè)文件只作用于當(dāng)前用戶

常見(jiàn)的環(huán)境變量:PWD、PATH、USER、SHELL、HOME

[root@localhost ~]#echo $PATH
#表示可執(zhí)行用戶程序的默認(rèn)路徑
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]#echo $PWD
#表示當(dāng)前所在工作目錄
/root
[root@localhost ~]#echo $USER
#表示用戶名稱
root
[root@localhost ~]#echo $SHELL
#表示使用SHELL類型
/bin/bash
[root@localhost ~]#echo $HOME
#表示用戶的宿主目錄
/root

定義環(huán)境變量

[root@localhost ~]#export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data"
[root@localhost ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data

環(huán)境變量

  • 可以使子進(jìn)程(包括孫子進(jìn)程)繼承父進(jìn)程的變量,但是無(wú)法讓父進(jìn)程使用子進(jìn)程的變量
  • 一旦子進(jìn)程修改從父進(jìn)程繼承的變量,將會(huì)新的值傳遞給孫子進(jìn)程
  • 一般只在系統(tǒng)配置文件中使用,在腳本中較少使用

?10.位置變量

位置變量也稱為位置參數(shù),使用$1、$2、$3、…、$9 表示

[root@localhost ~]#vim test.sh#!/bin/bash
echo $1
echo $2
echo $3[root@localhost ~]#bash test.sh  a b c d e
a
b
c[root@localhost ~]#bash test.sh {a..z}
a
b
c
[root@localhost ~]#bash test.sh {1..10}
1
2
3[root@localhost ~]#vim test.sh#!/bin/bash
echo $1
echo $2
echo $3
echo ${10}[root@localhost ~]#bash test.sh {1..10}
1
2
3
10
[root@localhost ~]#bash test.sh {1..20}
1
2
3
10[root@localhost ~]#vim test.sh#!/bin/bash
echo $1
echo $2
echo $3
echo ${10}
echo $10[root@localhost ~]#bash test.sh {a..z}
a
b
c
j
a0[root@localhost ~]#vim test.sh #!/bin/bash
echo $1
echo $2
echo $3
echo ${10}
echo $10
echo $*
echo $@[root@localhost ~]#bash test.sh {a..z}
a
b
c
j
a0
a b c d e f g h i j k l m n o p q r s t u v w x y z[root@localhost ~]#bash test.sh {a..z}
a
b
c
j
a0
a b c d e f g h i j k l m n o p q r s t u v w x y z
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@localhost ~]#bash test.sh {1..10}
1
2
3
10
10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10[root@localhost ~]#vim test.sh #!/bin/bash
echo $1
echo $2
echo $3
echo ${10}
echo $10
echo $*
echo $@
echo $0[root@localhost ~]#bash test.sh {1..10}
1
2
3
10
10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
test.sh[root@localhost ~]#vim test.sh #!/bin/bash
echo $1
echo $2
echo $3
echo ${10}
echo $10
echo $*
echo $@
echo $0
echo $#[root@localhost ~]#bash test.sh {1..10}
1
2
3
10
10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
test.sh
10
[root@localhost ~]#bash test.sh {1..20}
1
2
3
10
10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
test.sh
20
[root@localhost ~]# vim 1.sh      
#!/bin/bash
echo "$1"            位置1
echo "$2"            位置2
echo "${10}"         位置10
echo "$10"           位置1和0
echo "$*"            將所有項(xiàng)當(dāng)成一個(gè)值
echo "$@"            所有項(xiàng)
echo "$0"            腳本自身
echo "$#"            后面參數(shù)的個(gè)數(shù)

11.預(yù)定義變量

  • $*:表示所有位置參數(shù)的內(nèi)容看成一個(gè)整體返回 返回所有
  • $@:表示所有位置參數(shù)的內(nèi)容分割成n份,每份作為一個(gè)獨(dú)立的個(gè)體返回 返回所有
  • $?:表示前一條命令執(zhí)行后的返回狀態(tài),返回值為 0 表示執(zhí)行正確,返回任何非 0值均表示執(zhí)行出現(xiàn)異常
  • $#:表示命令行中位置參數(shù)的總個(gè)數(shù)
  • $0:表示當(dāng)前執(zhí)行的腳本或程序的名稱 當(dāng)前腳本的名字
  • $$:當(dāng)前bash的進(jìn)程id
  • $!: 后臺(tái)任務(wù)最后一個(gè)id

12.延伸——()和{}

()

[root@localhost ~]#ls
anaconda-ks.cfg       test.sh                    模板  文檔  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  視頻  下載
system_info.sh        公共                       圖片  音樂(lè)
[root@localhost ~]#cd /opt;ls
cxk
[root@localhost opt]#cd
[root@localhost ~]#(cd /opt;ls)
cxk

{}

[root@localhost ~]#ls
anaconda-ks.cfg       test.sh                    模板  文檔  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  視頻  下載
system_info.sh        公共                       圖片  音樂(lè)
[root@localhost ~]#(cd /opt;mkdir wyq)
[root@localhost ~]#ls /opt
cxk  wyq
[root@localhost ~]#{ cd /opt;touch wyq }
> ^C
[root@localhost ~]#{ cd /opt;touch wyq; }
[root@localhost opt]#ls
cxk  wyq
[root@localhost opt]#ll
總用量 0
drwxr-xr-x 2 root root 6 1月  23 18:13 cxk
drwxr-xr-x 2 root root 6 1月  23 18:33 wyq
[root@localhost opt]#{ cd /opt;touch wyq1; }
[root@localhost opt]#ls
cxk  wyq  wyq1

總結(jié)

()表示執(zhí)行過(guò),直接顯示結(jié)果;{}要執(zhí)行操作,也顯示結(jié)果;

()不需要結(jié)尾;{}需要;結(jié)尾;

()會(huì)開(kāi)啟子進(jìn)程;{}不會(huì)開(kāi)啟子進(jìn)程。

補(bǔ)充

[root@localhost ~]#name=cxk
[root@localhost ~]#(name=cxk;echo $name);echo $name
cxk
cxk[root@localhost ~]#{ name=cxk;echo $name; };echo $name
cxk
cxk
http://www.risenshineclean.com/news/27541.html

相關(guān)文章:

  • wordpress 游戲模版seo輿情優(yōu)化
  • crm管理seo培訓(xùn)一對(duì)一
  • 做網(wǎng)站應(yīng)注意什么新網(wǎng)域名注冊(cè)查詢
  • 寶安商城網(wǎng)站建設(shè)哪家便宜百度搜索引擎平臺(tái)
  • 興化網(wǎng)站建設(shè)推廣軟文發(fā)布平臺(tái)
  • 做任務(wù)得傭金的網(wǎng)站seo綜合查詢中的具體內(nèi)容有哪些
  • 怎么做免費(fèi)的網(wǎng)站推廣高級(jí)seo
  • oa軟件開(kāi)發(fā)定制seo求職
  • 網(wǎng)站文字設(shè)計(jì)搜索引擎營(yíng)銷sem包括
  • 一個(gè)公司多個(gè)網(wǎng)站做優(yōu)化今天新聞?lì)^條
  • 網(wǎng)站建設(shè)與維護(hù)作業(yè)東莞seo計(jì)費(fèi)管理
  • 網(wǎng)站建設(shè)推廣怎么做百度旗下產(chǎn)品
  • 建設(shè)網(wǎng)站后怎么發(fā)布長(zhǎng)沙網(wǎng)絡(luò)推廣公司
  • 網(wǎng)站打開(kāi)的速度慢網(wǎng)絡(luò)營(yíng)銷的工具和方法有哪些
  • wordpress儀表盤(pán)文件目錄seo挖關(guān)鍵詞
  • 微信小程序怎么做購(gòu)物網(wǎng)站推廣普通話的宣傳內(nèi)容
  • 創(chuàng)業(yè) 做網(wǎng)站培訓(xùn)心得簡(jiǎn)短200字
  • 邱縣網(wǎng)站建設(shè)今日國(guó)內(nèi)新聞大事20條
  • 四川省建設(shè)資格注冊(cè)中心網(wǎng)站重慶seo公司怎么樣
  • 龍巖做網(wǎng)站多少錢競(jìng)價(jià)網(wǎng)絡(luò)推廣外包
  • 網(wǎng)站制作那家便宜網(wǎng)絡(luò)營(yíng)銷有哪些推廣方式
  • 營(yíng)銷微網(wǎng)站建設(shè)公司seo推廣方案怎么做
  • 網(wǎng)站顯示內(nèi)容不顯示企業(yè)營(yíng)銷推廣怎么做
  • 貴陽(yáng)模板建站定制做seo必須有網(wǎng)站嗎
  • 隨州做網(wǎng)站的公司全網(wǎng)關(guān)鍵詞云怎么查
  • 如何將自己做的網(wǎng)站發(fā)布鄭州網(wǎng)站建設(shè)推廣有限公司
  • wordpress安裝dplayerseo免費(fèi)外鏈工具
  • 做平臺(tái)交易網(wǎng)站怎么收款優(yōu)化網(wǎng)站教程
  • 新建網(wǎng)站外鏈怎么做每日一則新聞?wù)?/a>
  • 怎么做網(wǎng)站的思維導(dǎo)圖廚師培訓(xùn)機(jī)構(gòu)