Linux初涉shell指令碼

2021-07-28 04:07:18 字數 3320 閱讀 9378

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指...