shell 腳本常用回顧~


Linux環境下使用 shell 的學習。

新建一個 shell 並定義變量

 #vim test.sh

輸入一段shell

#!/bin/bash

A=10

#!/bin/bash 爲定義解釋器。解釋器有多種,還有 bin/sh 等Linux默認就是 /bin/bash
定義一個變量 A=10 (A和=中間不能有空格)

執行 shell 的幾種方式

第一種方式 結果輸出10
# /bin/bash test.sh

第二種方式
# sh test.sh

第三種方式
# ./test.sh
但是這種方式會報錯
-bash: ./test.sh: 權限不夠
需要給文件增加權限 # chmod 777 test.sh
然後在執行 # ./test.sh 就可以成功了

判斷上一次執行shell腳本是否成功

# 如果返回 0 則成功
echo $? 

查看當前服務器的磁盤信息

命令如下:
# df -h

# 輸出下面的信息
文件系統        容量  已用  可用 已用% 掛載點
devtmpfs        909M     0  909M    0% /dev
tmpfs           919M   24K  919M    1% /dev/shm
tmpfs           919M  500K  919M    1% /run
tmpfs           919M     0  919M    0% /sys/fs/cgroup
/dev/vda1        50G  8.5G   39G   19% /
tmpfs           184M     0  184M    0% /run/user/0

打印當前腳本路徑

#!/bin/bash
echo "------------------"
A=99
echo A= $A
echo "B= $B"
echo "PWD= $PWD"
echo `pwd`

執行文件輸出如下:$PWD 代表的就是Linux查看當前路徑的命令 必須是大寫的
pwd取的是 Linux 程序集

------------------
A= 99
B=
PWD= /root/shellStudy

輸出當前文件名

其中 $0 代表的就是當前文件名

#!/bin/bash
echo "當前shel腳本的名稱是:$0"

# 輸出結果如下:
# 當前shel腳本的名稱是:test.sh

shell執行是否成功、獲取傳入參數相關

$1 代表獲取第一個參數
$2 代表獲取第二個參數
$# 代表參數個數
$* 代表所有參數

#!/bin/bash
echo "參數1是:$1"
echo "參數2是:$2"
echo "是否執行成功: $?"
echo "外界傳遞的參數是:$*"
echo "外界傳遞的參數個數是:$#"

#執行shell命令
# /bin/bash test.sh 1 2 3
#打印結果如下:

參數1是:1
參數2是:2
是否執行成功: 0
外界傳遞的參數是:1 2 3
外界傳遞的參數個數是:3

for 循環

  • Linux 打印
# 這是 Linux 的循環方式 執行會打印 1-20 的數字
# seq 1 20
  • 定義 sh 進行打印 for循環 腳本如下:採用Linux內置的seq
    、、是 Tab上的那個點
#!/bin/bash

for i in `seq 1 10`
do
	echo "循環遍歷:$i"
done

打印後循環打印 1-10

計算

  • Linux 內置方式
# expr 1000 + 1

#打印如下
1001
  • 新建 sh 進行 for 循環如下:
#!/bin/bash

a=0

for((n=0;n<100;n++))
do
	a=`expr $n + $a`
done

echo "最終a的值爲:$a"

打印結果:最終a的值爲:4950

查找文件夾內文件

新建三個txt文件

# vim text01.txt
# vim text02.txt
# vim text03.txt

查找命令

# find . -name "*.txt"

#輸出如下
./text01.txt
./text03.txt
./text02.txt

把文件打成壓縮包

將 t1.txt 和 t2.txt 壓縮成 hello.zip
# zip -r hello.zip t1.txt t2.txt

# tar czf all.taz *

czf cvf 也是壓縮的方式

tar -czf t.tar.gz *.txt 

while 循環

  • 執行下面腳本輸出 1 - 100
#!/bin/bash

i=0
while((i<100))
do
	i=`expr $i + 1`
	echo "循環 $i"
done

while 讀取 read 手動輸入控制檯的信息

#!/bin/bash

while read line
do
	echo "讀取的值爲: $line"
done

結果如下:

[root@VM_0_4_centos study]# sh test.sh
wwwww
讀取的值爲: wwwww
^C

if else 語句

#!/bin/bash

num1=100
num2=200
if(($num1>$num2))
then
	echo "num1 比 num2 大"
else
	echo "num1 比 num2 小"
fi
  • 使用 if 判斷文件夾是否存在
#!/bin/bash
# 判斷當前文件夾下是否有 lu文件夾
if [ ! -d `pwd`/lu  ]
then
	# 沒有則在當前文件夾下創建 lu 文件夾
	mkdir -p `pwd`/lu
else
	echo "存在 lu 文件夾"
fi

Linux 重定向

  • Linux 都是文件形式的存在,即使是那個黑窗口,它是 0 號文件。我們將自己定義的 txt 定向到 0 號文件上。
cat 0< t1.txt

未完待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章