国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

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

自建個人網(wǎng)站seo關(guān)鍵詞查詢

自建個人網(wǎng)站,seo關(guān)鍵詞查詢,asp網(wǎng)站開發(fā)實(shí)訓(xùn),電商網(wǎng)站設(shè)計(jì)流程目錄 1.Shell腳本基礎(chǔ) 1.1Shell概述 1.2Shell腳本應(yīng)用場景 1.3Linux中常見的Shell 1.4Shell的作用 2.腳本的構(gòu)成 2.1編寫腳本 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)用場景

1.3Linux中常見的Shell

1.4Shell的作用

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

2.1編寫腳本

2.2執(zhí)行腳本

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

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

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

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

2.2.5延伸

3.重定向和管道符

3.1重定向

3.1.1延伸

3.2多行重定向

3.3管道符

4.特殊符號

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)格

面向過程語言? ?開發(fā)的時候 需要 一步一步 執(zhí)行

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

面向?qū)ο笳Z言? ?開發(fā)的 時候 將 任務(wù) 當(dāng)成一個整體

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

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

三種處理邏輯

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

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

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

1.Shell腳本基礎(chǔ)

1.1Shell概述

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

腳本是命令的集合;

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

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

Linux 系統(tǒng)中的 Shell 是一個特殊的應(yīng)用程序,它介于操作系統(tǒng)內(nèi)核與用戶之間,充當(dāng) 了一個“命令解釋器”的角色,負(fù)責(zé)接收用戶輸入的操作指令(命令)并進(jìn)行解釋,將需要執(zhí) 行的操作傳遞給內(nèi)核執(zhí)行,并輸出執(zhí)行結(jié)果。 常見的 Shell 解釋器程序有很多種,使用不同的 Shell 時,其內(nèi)部指令、命令行提示符 等方面會存在一些區(qū)別。通過/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)用場景

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

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

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

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

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

1.3Linux中常見的Shell

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

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)境等會有所區(qū)別

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

編寫腳本代碼

  • 使用vim文本編輯器
  • 每行一條Linux命令,按執(zhí)行順序依次編寫
[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é)

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

2.1編寫腳本

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

2.2執(zhí)行腳本

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

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

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

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

2.2.3source和" . "執(zhí)行(不需要加執(zhí)行權(quán)限)——不推薦(會影響環(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í)行腳本,會開啟子bash環(huán)境去執(zhí)行腳本;使用source和 . 執(zhí)行腳本 會影響當(dāng)前的bash環(huán)境;

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

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

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

腳本執(zhí)行邏輯

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

1.命令錯誤

命令執(zhí)行如果錯誤的話,不會影響接下來的命令執(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.語法錯誤

會影響接下來的命令繼續(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.邏輯錯誤

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

[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)前目錄下加絕對路徑) ? ? 檢查語法錯誤
bash -x 腳本名稱 (不在當(dāng)前目錄下加絕對路徑) ? ? 邏輯錯誤

總結(jié)

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

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

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

2.2.5延伸

set -e

如果命令出錯,立即停止

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

set -u

變量出錯,立即停止

[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è)備文件文件描述編號默認(rèn)設(shè)備
標(biāo)準(zhǔn)輸入/dev/stdin0鍵盤
標(biāo)準(zhǔn)輸出/dev/stdout1顯示器
標(biāo)準(zhǔn)錯誤輸出/dev/stderr2顯示器

交互式硬件設(shè)備

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

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

類型操作符用途
重定向輸入<從指定的文件讀取數(shù)據(jù),而不是從鍵盤輸入
重定向輸出1>將輸出結(jié)果保存到指定的文件(覆蓋原有內(nèi)容)
>>將輸出結(jié)果追加到指定的文件尾部
標(biāo)準(zhǔn)錯誤輸出2>將錯誤信息保存到指定的文件(覆蓋原有內(nèi)容)
2>>標(biāo)準(zhǔn)錯誤輸出結(jié)果追加到指定的文件尾部
混合輸出&>無論對錯都可以重定向將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤的內(nèi)容保存到同一個文件中
[root@localhost ~]#ls /dev/pts/1
/dev/pts/1
#ls命令最終顯示到終端  標(biāo)準(zhǔn)重定向省略了1>[root@localhost ~]#xxx >/dev/pts/1
bash: xxx: 未找到命令...
#錯誤重定向[root@localhost ~]#rm xxx.txt >/dev/pts/1
rm: 無法刪除"xxx.txt": 沒有那個文件或目錄
#錯誤重定向
[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
公共
模板
視頻
圖片
文檔
下載
音樂
桌面

3.1.1延伸

#不能將正確和錯誤一起顯示出來 
[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
#不可以顯示出來1代表 正確輸入
2代表 錯誤輸入
&    代表混合

3.2多行重定向

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

[root@localhost opt]#wc -l <<EOF
123
321
eof
EOF
3[root@localhost opt]#cat > cxk.txt
#需要回車才可以寫入
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管道符

管道操作符號“ |?”

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

[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.特殊符號

  1. 賦值時使用雙引號(" ")可以直接調(diào)用變量
  2. 賦值時使用單引號(' ')變量$只會被認(rèn)為是字符$ 不會調(diào)用變量
  3. 賦值時使用(``反撇在tab上面)命令替換,提取命令執(zhí)行后的輸出結(jié) 果 和$( ) 用法相同
  4. {}可以分隔變量值
雙引號弱引用可以識別變量
單引號強(qiáng)引用不能識別變量
{? }定義變量名的范圍
''(反撇)調(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變量的作用

用來存放系統(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

常見的Shell變量的類型

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

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

5.2命名要求

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

特殊符號

  • 賦值時使用雙引號(" ")可以直接調(diào)用變量(雙引號 弱引用 可以識別變量)
  • 賦值時使用單引號(' ')變量$只會被認(rèn)為是字符$ 不會調(diào)用變量(單引號 強(qiáng)引用 不能識別變量)
  • 賦值時使用(``反撇在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: 無法反設(shè)定: 只讀 variable
[root@localhost ~]#reboot[root@localhost ~]#echo $name#重啟之后就會失效

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

定義一個新的變量

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

查看變量值

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

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 "請輸入密碼:"  numberecho $number[root@localhost ~]#bash test.sh 
請輸入密碼:123
123[root@localhost ~]#vim test.sh#/bin/bash
read -p "請輸入ip地址檢測主機(jī)連通性:"  time
ping -c2 $time[root@localhost ~]#bash test.sh 
請輸入ip地址檢測主機(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)境中,局部變量將無法再起作用。
  • 可以通過內(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

可以在定義的時候加export

也可以在定義完之后 開啟子環(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: 語法錯誤
[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 每次引用這個參數(shù)時,都會產(chǎn)生一個        0        到         32767之間的隨機(jī)整數(shù)??梢酝ㄟ^向                                 RANDOM賦值來初始化隨機(jī)數(shù)序列。如果取消了                         RANDOM的定義,它就失去了特殊的意義,即使后來重新定義它。

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 型號名稱|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型號:  $cpu"
echo "內(nèi)核版本: $test"
echo "系統(tǒng)類型: $os"
echo "磁盤大小: $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型號:  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) 
磁盤大小: 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
型號:              142
型號名稱:        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 型號名稱
型號名稱:        Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
[root@localhost ~]#lscpu |grep 型號名稱|tr -s " "|cut -d " " -f2
Intel(R)
[root@localhost ~]#lscpu |grep 型號名稱|tr -s " "|cut -d " " -f2-8
Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
[root@localhost ~]#lscpu |grep 型號名稱|tr -s " "|cut -d ":" -f2-8
型號名稱: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
[root@localhost ~]#lscpu |grep 型號名稱|tr -s " "|cut -d ":" -f2
型號名稱: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz

9.環(huán)境變量

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

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

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

常見的環(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)程的變量,但是無法讓父進(jìn)程使用子進(jìn)程的變量
  • 一旦子進(jìn)程修改從父進(jìn)程繼承的變量,將會新的值傳遞給孫子進(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)成一個值
echo "$@"            所有項(xiàng)
echo "$0"            腳本自身
echo "$#"            后面參數(shù)的個數(shù)

11.預(yù)定義變量

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

12.延伸——()和{}

()

[root@localhost ~]#ls
anaconda-ks.cfg       test.sh                    模板  文檔  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  視頻  下載
system_info.sh        公共                       圖片  音樂
[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        公共                       圖片  音樂
[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í)行過,直接顯示結(jié)果;{}要執(zhí)行操作,也顯示結(jié)果;

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

()會開啟子進(jìn)程;{}不會開啟子進(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://aloenet.com.cn/news/31549.html

相關(guān)文章:

  • 上市的網(wǎng)站設(shè)計(jì)公司頭條今日頭條新聞
  • linux可以做網(wǎng)站開發(fā)嗎免費(fèi)二級域名分發(fā)平臺
  • wordpress怎么導(dǎo)入產(chǎn)品aso優(yōu)化服務(wù)
  • 網(wǎng)站設(shè)計(jì) 下拉式菜單怎么做seo搜索
  • 做動態(tài)網(wǎng)站不需要DW嗎百度關(guān)鍵詞排名優(yōu)化
  • 網(wǎng)站開發(fā)補(bǔ)充協(xié)議成人短期培訓(xùn)能學(xué)什么
  • 湖南住建云網(wǎng)站徐州seo網(wǎng)站推廣
  • 周口網(wǎng)站建設(shè)zkwebaso網(wǎng)站
  • 黑客以網(wǎng)站做跳板入侵方法優(yōu)化疫情防控 這些措施你應(yīng)該知道
  • 京東網(wǎng)站建設(shè)案例抖音seo排名優(yōu)化
  • 做業(yè)務(wù)有哪些好的網(wǎng)站百度灰色關(guān)鍵詞排名代做
  • 深圳建筑設(shè)計(jì)平臺網(wǎng)站seo分析與優(yōu)化實(shí)訓(xùn)心得
  • 織夢網(wǎng)站安裝教程電商的運(yùn)營模式有幾種
  • 杭州市建設(shè)網(wǎng)站個人免費(fèi)網(wǎng)站創(chuàng)建入口
  • 縱橫中文網(wǎng)關(guān)鍵詞優(yōu)化收費(fèi)標(biāo)準(zhǔn)
  • 衡水網(wǎng)站建設(shè)費(fèi)用長沙網(wǎng)站推廣公司排名
  • 政府網(wǎng)站建設(shè)如何做seo站長助手
  • 豐臺區(qū)社會建設(shè)網(wǎng)站比較有名的個人網(wǎng)站
  • 主題資源網(wǎng)站建設(shè)步驟推廣網(wǎng)站平臺
  • 河南省建設(shè)廳網(wǎng)站官網(wǎng)營銷推廣技巧
  • 行業(yè)門戶網(wǎng)站如何做永久免費(fèi)個人網(wǎng)站注冊
  • 做爰全過程免費(fèi)的視網(wǎng)站頻外包網(wǎng)絡(luò)推廣公司
  • 做網(wǎng)站優(yōu)化用什么軟件微信引流用什么軟件好用
  • 網(wǎng)站建立網(wǎng)站百度推廣的渠道有哪些
  • 怎么做彩票網(wǎng)站收款人網(wǎng)站排名點(diǎn)擊工具
  • 如何制作一個注冊網(wǎng)站建個網(wǎng)站需要多少錢
  • 寧波網(wǎng)站建設(shè)制作哪家好百度公司地址
  • 網(wǎng)站托管公司站長工具外鏈查詢
  • 給網(wǎng)站劃分欄目怎么做百度關(guān)鍵詞排名
  • 做網(wǎng)站用什么框架好怎么引流怎么推廣自己的產(chǎn)品