乙個小小的shell指令碼實踐

2021-10-25 07:14:22 字數 2431 閱讀 9501

三、實踐--複製資料夾

最近碰到一下需要頻繁複製乙個資料夾的內容覆蓋另乙個資料夾的情況,想著正好可以對不是很熟悉的指令碼下手了,寫個複製的指令碼。於是便有了本文的產生。下面我將會介紹最需要掌握的關於shell的知識以便各位速成shell指令碼,需要全面了解請谷歌。

shell就是linux或者mac的終端,它是一種c語言寫的應用,也可以看作是一種命令語言,而shell script 即shell指令碼是針對shell這個應用編寫的指令碼程式。指令碼(script),是使用一種特定的描述性語言,依據一定的格式編寫的可執行檔案。shell有很多種,常見的有:

注意兩個問題即可,一是可執行許可權chmod +x ***.sh,二是使用正確的shell然後cd到當前資料夾./***.sh

在我看來至少得會下面幾個知識點

規則如下

#!/bin/bash

#這句是指定應bash這個應用,不懂得加上就是了

var=

"這是乙個變數"

# #可以注釋,使用變數可以這樣寫

var2=

"11"+$var

#或者這樣,花括號主要是可以解決一些界限的問題,遇到就懂了,

#推薦給所有變數加上花括號,這是個好的程式設計習慣。

var2=

"11"+$

#當然不能少了列印函式

echo

$var2

更詳細的刪除變數,唯讀變數,以及變數型別及使用請谷歌之,都寫出來就太長了

if else if else

if condition1

then

command1

elif condition2

then

command2

else

commandn

fi

for迴圈

for var in item1 item2 ... itemn

do command1

command2

...commandn

done

while 迴圈

while condition

docommand

done

case選擇(類似switch)

case 值 in

模式1)

command1

command2

...commandn

;;# ;;代表break

模式2)

command1

command2

...commandn

;;esac

這個就是可以解析命令列引數的東西,舉個例子:

./***.sh -a 111

-b 111

a 和b後面的兩個111就可以用getopts得到,其實這是個內建變數,使用格式如下

getopts optstring argname
具體使用請看下面的實踐。

#!/bin/bash

#create by gol_light on 20201028

while

getopts

"a:b:" arg #選項後面的冒號表示該選項需要引數

docase

$arg

in a)

#echo "a's arg:$optarg" #引數存在$optarg中

dir_path_a=

$optarg

#需要複製的原始檔;;

b)#echo "b's arg:$optarg"

dir_path_b=

$optarg

#需要複製的目的檔案;;

?)#當有不認識的選項的時候arg為?

echo

"unkonw argument"

exit 1

;; esac

done

echo

"正在將 $dir_path_a 複製到 $dir_path_b"

rm -r $dir_path_b

#先刪除

mkdir

$dir_path_b

#後建立

cp -af $dir_path_a

$dir_path_b

#然後複製

#!/bin/bash

#create by gol_light on 20201028

./copy.sh -a ptaha -b pathb

編輯好目錄,然後./下面的.sh 就大功告成

希望對你有所幫助,如果沒有,你就當沒看過

this乙個小小的迷惑

include using namespace std class b b b class b void virtual print 不知道為什麼列印的不一致呢 自己的理解 由於d繼承自b,構造d的時候需要先構造b,在b的建構函式中的this內部的具體情況如下圖,此時d還沒有構造出來,vfptr的詳...

乙個小小的爬蟲技巧

寫過爬蟲的同學對 requests 庫應該非常熟悉了,這個庫是如此的好用。但今天我就遇到了使用瀏覽器可以正常訪問,一旦使用 requests 去 get 此 ip 就會被封,然後瀏覽器也無法訪問。需要等待幾個小時之後才能訪問。過了幾個小時,我又使用瀏覽器訪問了此 url a,開啟谷歌瀏覽器的開發者工...

python 乙個小小的效能提公升

你可以通過將函式或方法的定位結果精確地儲存至乙個本地變數來獲得一些效能提公升。乙個迴圈如 for key in token dict key dict.get key,0 1 每次迴圈都要定位dict.get。如果這個方法一直不變,可這樣實現以獲取小小的效能提公升 dict get dict.get...