Shell指令碼書寫總結

2021-06-03 06:34:22 字數 1976 閱讀 6721

指令碼開頭必須有:

#!/bin/sh

指令碼結束後用:

chmod +x filename

修改指令碼使用許可權

變數定義:

變數名=值

在變數名之前加乙個$,就可以取出變數值:

**********************************

#!/bin/sh

#對變數賦值:

a="hello world"

# 列印變數a的值:

echo "a is:" $a

**********************************

**********************************

num=2

echo "this is the $nd"

***********************************

管道 |

重定向 <  > >>

反短斜線

使用反短斜線可以將乙個命令的輸出作為另外乙個命令的乙個命令列引數。

流程控制

if ....; then

....

elif ....; then

....

else

....

fi條件測試:

[ -f "somefile" ] :判斷是否是乙個檔案

[ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行許可權

[ -n "$var" ] :判斷$var變數是否有值

[ "$a" = "$b" ] :判斷$a和$b是否相等

case表示式可以用來匹配乙個給定的字串,而不是數字

case ... in

...) do something here ;;

esac

我們利用這一點寫了乙個叫做smartzip的指令碼,該指令碼可以自動解壓bzip2, gzip 和zip 型別的壓縮檔案:

#!/bin/sh

ftype=`file "$1"`

case "$ftype" in

"$1: zip archive"*)

unzip "$1" ;;

"$1: gzip compressed"*)

gunzip "$1" ;;

"$1: bzip2 compressed"*)

bunzip2 "$1" ;;

*) error "file $1 can not be uncompressed with smartzip";;

esac

您可能注意到我們在這裡使用了乙個特殊的變數$1。該變數包含了傳遞給該程式的第乙個引數值。也就是說,當我們執行:

smartzip articles.zip

$1 就是字串 articles.zip

select 表示式是一種bash的擴充套件應用,尤其擅長於互動式使用。使用者可以從一組不同的值中進行選擇。

*********************************

select var in ... ; do

break

done

.... now $var can be used .... 

*********************************

*********************************

while ...; do

....

done 

*********************************

引號 (單引號和雙引號) 將防止這種萬用字元擴充套件:

****************

#!/bin/sh

echo $shell

echo "$shell"

echo '$shell'

執行結果為:

/bin/bash

/bin/bash

$shel

*****************

shell指令碼書寫規範

n年後的第一更,這裡主要記錄一些平時自己不太注意的點 usr bin env bash 2.一行 太長,需要用 進行分行,看起來更美觀 configure prefix usr sbin path usr sbin nginx conf path etc nginx nginx.conf 3.在指令...

shell指令碼書寫書寫的思路流程

指令碼書寫的思路流程 boss的需求 系統安裝好之後,能夠有乙個良好的實驗環境。工作人員自己的需求 寫乙個系統初始化指令碼1 整理需求。例如 自動初始化指令碼 1 將ip位址配置為 dhcp 2 將yum源配置好 3 將防火牆關閉 4 將 selinux 關閉 5 光碟自動掛載 2 需求用命令實現 ...

ETL 指令碼書寫規範

2014 11 24 1.前言 為了統一軟體開發過程中關於sql structured query language 編碼的格式,使編碼人員編寫sql 遵從特定的風格,並養成良好的開發習慣,從而增強 的可讀性,便於交流和維護,特此收集。1.1邊界定義 規範主要應用於teradata sql 的dml...