1)檔案的第一行應為:
#!/bin/bash ##預設執行環境為/bin/bash
2) chmod +x file.sh ##使檔案可執行
3)指令碼除錯
sh -x file.sh
1)引用與轉義
強引用 』 』 單引號:將字串放置在單引號中,保留字串中所有字元的文字值,同時禁用所有擴充套件.
弱引用 」 」 雙引號:將字串放置在雙引號中,變數擴充套件和命令擴充套件在雙引號內仍起作用.
轉義 \ 反斜線:非引用的\是轉義字元.它保留了下乙個字元的文字值.
2)shell變數
shell變數用於為稍後在指令碼中使用的名稱指定值,並且僅限於shell命令列或從中宣告變數的指令碼,常用大寫表示.使用時變數前加$.
例子:
#!/bin/bash
name=yang
echo name is $name
3)算術運算子++ ##增量後
-- ##減量後
- ##減法
+ ##加法
** ##冪運算
* ##乘法
/ ##除法
% ##餘數
+= ##加等
-= ##減等
4)迴圈語句
for語句
for n in $(seq 1
210 ) ##1-10間隔為2
doecho
"$n"
done
用(())表示數**算.
#!/bin/bash
for ((i=1;i<10;i++))
do ((j+=i))
done
echo
$j
5)選擇分支語句
if語句
#!/bin/bash
if [ 1 > 0 ]
then
echo
1else
echo0fi
[root@server mnt]# sh shell.sh
1
case語句
#!/bin/bash
case
"$1"
in1)
echo this is 1
;; 2)
echo this is 2
;; *)
echo not 1 or 2
;;esac
[root@server mnt]# sh shell.sh 1
this is 1
[root@server mnt]# sh shell.sh 12
not 1 or 2
[root@server mnt]# sh shell.sh 2
this is 2
6)互動式輸入
read提示使用者輸入(使用-p選項)並將其直接儲存到乙個或多個變數
#!/bin/bash
read -p "please input:" word
echo word is $word
[root@server mnt]# sh shell.sh 2
please input:yang
word is yang
使用位置引數來讀取傳遞給指令碼的命令列引數或選項輸入。各種特殊變數儲存傳遞的選項編號
指定的位置引數總數:$#
位置引數自身:$0、$1、$2、$3.
...所有位置引數: $@、$*
7)退出狀態grep的退出狀態的含義:
0 – 在指定的檔案中找到了模式
1 – 在指定的檔案中未找到模式
>1 – 一些其他錯誤(無法開啟檔案、錯誤的搜尋表示式等)
[root@server mnt]# cat /mnt/shell.sh >& /dev/null
[root@server mnt]# echo $?
0[root@server mnt]# cat /mnt/shell.s >& /dev/null
[root@server mnt]# echo $?
1
8)自動應答
yum install expect.x86_64 -y ##自動應答指令碼所需軟體
vim /mnt/ssh
read -p "please user"
-s user
read -p "please ip"
-s ip
ssh $@$
vim /mnt/answer.exp
#!/usr/bin/expect
set user [ lindex $argv
0 ]set passwd [ lindex $argv
1 ]set ip [ lindex $argv
2 ]spawn /mnt/ssh
expect
"yes"
"please ip"
"password"
expect eof
}
[root@server mnt]# /mnt/answer.exp root westos 172.25.254.62
spawn /mnt/ssh
please userplease [email protected]'s password:
last login: thu mar 9
16:54:56
2017
from
172.25
.254
.10[root@yang ~]#
9)環境變數
shell和指令碼使用變數來儲存資料 ,有些變數可以連同它們的內容傳遞給子程序,這些變數我們稱之為環境變數.
export ##環境級
vim ~/.bash_profile ; source .bash_profile ##使用者級
vim /etc/profile ; source /etc/profile ##系統級
初涉linux(三)之shell程式設計
color red 如果系統學習,使用 高階bash指令碼程式設計指南 這本書 color shell初級程式設計 by hayabusa 3.1講義 3.1.1 shell set 所有變數 unset 取消變數設定 export 變數 匯出變數,使其全域性可用 env 環境變數 shell基本格...
linux學習1 初涉linux
linux因其穩定高效的特點,受到很多開發者的青睞,因此將其作為伺服器的作業系統。作為一名開發者,程式設計師,掌握了一定的linux知識和技巧,程式的開發部署和執行也有不小的幫助。linux由於其開源的特性,存在很多的版本,大同小異,大多數企業使用rhel。學習linux,首先要有乙個linux環境...
初窺Shell 指令碼
1 shell是什麼 shell指令碼就是利用shell的命令解釋的功能,對乙個純文字的檔案進行解析,然後執行這些功能,也可以說shell指令碼就是一系列命令的合集。shell可以直接使用在win unix linux上面,並且可以呼叫大量系統內部的功能來解釋執行程式,如果熟練使用並掌握shell指...