shell的基本使用

2022-07-10 10:36:14 字數 4113 閱讀 7432

#!/bin/bash,#! 告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 bash 程式。

chmod +x ./test.sh  #使指令碼具有執行許可權

./test.sh #執行指令碼

your_name="harry"
注意,變數名和等號之間不能有空格

if condition

then

command1

command2

...commandn

fi

注意:必須以fi結尾

if else-if else

if condition1

then

command1

elif condition2

then

command2

else

commandn

fi

#!/bin/bash

a=10

b=20

c="company"

val=`expr $a + $b`

echo "a + b : $val"

val=`expr $a - $b`

echo "a - b : $val"

val=`expr $a \* $b`

echo "a * b : $val"

val=`expr $b / $a`

echo "b / a : $val"

val=`expr $b % $a`

echo "b % a : $val"

if [ $a == $b ]

then

echo "a 等於 b"

fiif [ $a != $b ]

then

echo "a 不等於 b"

fiif [ $c = "company" ]

then

echo "c 是 company"

fi

輸出:

a + b : 30

a - b : -10

a * b : 200

b / a : 2

b % a : 0

a 不等於 b

c 是 company

注意:

echo "input something:"  

read input

echo "your input is: $input"

輸出:

input something:  

test

your input is: test

vim test.sh

:set ff?

檢查編碼格式,如果出現fileforma=dos,則使用:set fileformat=unix改變編碼。

因為作業系統是windows,在windows下編輯的指令碼,所以有可能有不可見字元。

指令碼檔案是dos格式的, 即每一行的行尾以 來標識, 其ascii碼分別是0x0d, 0x0a。

usage()

if [[ $# -eq 0 ]]; then

usage

fiwhile [ $# -gt 0 ]; do

case $1 in

-h|--help)

usage

shift 1

;;-d)

if [[ $2 ]]; then

outdir=$2

shift 2

else

usage

shift 1

fi;;

-u)if [[ $2 ]]; then

unzipdir=$2

shift 2

else

usage

shift 1

fi;;

*)

usage

shift 1

;;esac

done

if [[ "$outdir" = "" || "$unzipdir" = "" ]]; then

usage

fi

-c: 建立壓縮檔案

-x:解壓

-t:檢視內容

-r:向壓縮歸檔檔案末尾追加檔案

-u:更新原壓縮包中的檔案

這五個是獨立的命令,壓縮解壓都要用到其中乙個,可以和別的命令連用但只能用其中乙個。下面的引數是根據需要在壓縮或解壓檔案時可選的。

-z:有gzip屬性的

-j:有bz2屬性的

-z:有compress屬性的

-v:顯示所有過程

-o:將檔案解開到標準輸出

下面的引數-f是必須的

-f: 使用檔案名字,切記,這個引數是最後乙個引數,後面只能接檔名。

假設有變數var=cq_qq_2017071115

var=cq_qq_2017071115

# #號擷取,刪除左邊字元,保留右邊字元

echo $

#號是運算子,*_ 表示從左邊開始刪除第乙個 _ 號及左邊的所有字元

>qq_2017071115

# ##號擷取,刪除左邊字元,保留右邊字元

echo $

##*_ 表示從左邊開始刪除最後(最右邊)乙個 _ 號及左邊的所有字元

>2017071115

# %號擷取,刪除右邊字元,保留左邊字元

echo $

%_* 表示從右邊開始,刪除第乙個 _ 號及右邊的字元

>cq_qq

# %%號擷取,刪除右邊字元,保留左邊字元

echo $

%%_* 表示從右邊開始,刪除最後(最左邊)乙個 _ 號及右邊的字元

>cq

# 從左邊第幾個字元開始,及字元的個數

echo $

0代表從0開始,擷取6個字元

>cq_qq_

# 從左邊第幾個字元開始,一直到結束

echo $

7代表從7開始,擷取到最後

>017071115

# 從右邊第幾個字元開始,及字元的個數

echo $

其中的 0-7 表示右邊算起第七個字元開始,3 表示字元的個數

>707

# 從右邊第幾個字元開始,一直到結束

echo $

表示從右邊第七個字元開始,一直到結束

>7071115

比如現在檔案目錄為

cq_qq_2017071110_lo.tar.gz

cq_qq_2017071111_lo.tar.gz

cq_qq_2017071210_lo.tar.gz

cq_qq_2017071211_lo.tar.gz

現在使用

list_alldir()  # 從路徑中取出檔名

filename=`echo $filename | awk -f '_' ''`

if [[ `echo $` = $2 ]]

then

tar zxf $file -c ./test #解壓檔案

fifi

done

}

其中filename=`echo $filename | awk -f '' ''`意思為將filename以'_'分割(awk -f ''),分割後為四段,分別為'cq','qq','2017071110','lo.tar.gz',然後我們取第三段(''),再echo輸出,最後賦值給filename。

再判斷if [[ `echo $` = $2 ]] 如果日期等於輸入的日期就執行,tar zxf \$file -c ./test解壓檔案。

shell 基本使用

一 shell程式設計變數簡介 shell程式語言屬於弱語言,在使用變數前無需對變數進行宣告,變數的預設型別為 字串型別 可以通過echo 變數名 進行提取變數的值。在bash中,變數型別分為 環境變數 本地變數 區域性變數 位置變數 特殊變數,其中環境變數和本地變數是以作用域來進行區分。二 變數配...

shell基本使用教程

shell程式設計 1 沒有資料型別,都是字串,數值也時字串 建立變數 a hello echo aec ho a echo aech o echo 三者等價 echo ahe lloe cho hell ob a hello echo hello b ahello echo hel loba a ...

shell中sqlldr ctl的基本使用與示例

在shell指令碼中,向oracle資料庫表插入資料 要先確認環境是否有sqlldr命令 編碼 訂購狀態 產品編碼 產品訂購例項id 訂購生效時間 訂購失效時間 計費開始時間 受理工號 bboss商品名稱 商品規格編碼 商品例項id 產品名稱 產品規格編碼 產品訂購例項id 3511143538 0...