1、介紹shell
1.SHELL語言是指UNIX操做系統的命令語言,同時又是該命令語言的解釋程序的簡稱。
2.Shell自己是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋樑,用戶的大部分工做都是經過Shell完成的。
3.Shell既是一種命令語言,又是一種程序設計語言。做爲命令語言,它交互式地解釋和執行用戶輸入的命令;
4.做爲程序設計語言,它定義了各類變量和參數,並提供了許多在高級語言中才具備的控制結構,包括循環和分支。
5.它雖然不是Unix/Linux系統內核的一部分,但它調用了系統核心的大部分功能來執行程序、
6.創建文件並以並行的方式協調各個程序的運行。
7.所以,對於用戶來講,shell是最重要的實用程序,
8.深刻了解和熟練掌握shell的特性極其使用方法,是用好Unix/Linux系統的關鍵。
2、shell能作什麼?算法
(2)執行2:sh 1111.shshell
(3)執行3: . 1111.sh編程
(4)執行4: source 1111.sh安全
(5)比較四種方式的所在位置:
區別:1和2的方式,是子shell 3和4的方式,是本shellbash
(6):shell解釋器有哪些
:shell 命令就是前一階段所學習的大部分命令。 cp ls date組合到一塊兒。ide
Linux支持的shell有哪些呢?
cat /etc/shells
或
chsh -l工具
4、變量類型:
1.自定義變量:
特性:1. 自定義變量(示例:ping01.sh引入變量)
定義變量: 變量名=變量值 變量名必須以字母或下劃線開頭,區分大小寫 ip1=192.168.2.115
引用變量: $變量名 或 ${變量名}
查看變量: echo $變量名; "set"能夠查看全部變量(包括自定義變量和環境變量)
取消變量: unset 變量名
做用範圍: 僅在當前shell中有效
2.實例:使用變量前。麻煩
ping -c1 10.8.162.120 &>/dev/null && echo 10.8.162.120up || echo 10.8.162.120.10down學習
(1)使用後簡潔:
測試(2)測試:
操作系統
2.變量賦值(定義變量):
(1) 顯式賦值
變量名=變量值
示例:
ip=192.168.1.251
school="BeiJing 1000phone"
today1=date +%F
today2=$(date +%F)(2)read 從鍵盤讀入變量值:
read -p "請輸入您測試的IP地址:" ip
測試:(3):定義或引用變量時注意事項:
" " 弱引用 //脫去空格
' ' 強引用 //脫去全部字符意思//優先執行 :命令替換 等價於 $() 反引號中的shell命令會被先執行
另外一種用法: touch $(date +%F)_file2.txt
2.環境變量:環境變量
定義環境變量: 方法一 export back_dir2=/home/backup
方法二 export back_dir1 將自定義變量轉換成環境變量
引用環境變量: $變量名 或 ${變量名}
查看環境變量: echo $變量名 env 例如env |grep back_dir2
取消環境變量: unset 變量名
變量做用範圍: 在當前shell和子shell有效 !!!!!!!!!!!!!!!!!!!!!!!
使變量開機、登錄生效,將變量放到~/.bash_profile
(1)語法:預先定義過的變量
$0 腳本名
$* 全部的參數
$@ 全部的參數
$# 參數的個數
$$ 當前進程的PID
$! 上一個後臺進程的PID
$? 上一個命令的返回值 0表示成功
(2)實例1:
實驗: ./ tst.sh 1 2 3 4 5 6
4.$和$@區別(資料):
shell中$與$@的區別
關於$* 和 $@的 一點 認識 同是菜鳥一塊兒學習
$
全部的位置參數,被做爲一個單詞.
注意:"$"必須被""引用.br/>$@
與$*同義,可是每一個參數都是一個獨立的""引用字串,這就意味着參數被完整地傳遞,
並無被解釋和擴展.這也意味着,每一個參數列表中的每一個參數都被當成一個獨立的
單詞.
注意:"$@"必須被引用.
$@ $ 只在被雙引號包起來的時候纔會有差別
雙引號括起來的狀況:
$將全部的參數認爲是一個字段
$@以IFS(默認爲空格)來劃分字段,若是空格在「」裏面,不劃分。採用LS的腳本運行./test 1 "2 3" 4 來發現差別
沒有括起來的狀況是$@和$*同樣的,見到IFS就劃分字段。仍是採用LS的腳本運行./test 1 "2 3" 4 來發現差別
一個小例子 ,僅供參考
[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 "全部的參數被認爲是一個單詞"
echo
index=1
echo "Listing args with \"\$@\":"
for arg in "$@"
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "全部的參數被認爲是各個獨立的單詞"
echo
index=1
5、變量的運算
(1) expr用法:方法一、
(2)方法二:$(())
(3)方法三:$[]
(4)方法四:let
2.小數運算:
須要用到工具 bc 至關於一個計算器
yum -y install bc
(1)小數運算,用bc和不用bc的區別
直接輸入bc的用法 :
(2)在shell命令上直接用bc
scale=2 保留小數點後面兩位bc:交互運算器