Shell編程入門(第二版)(上),shell編程入門

來源:互聯網
上載者:User

Shell編程入門(第二版)(上),shell編程入門
簡單的樣本Shell程式

樣本1.

#!/bin/bash#This is to show what a shell script looks likeecho "Our first example"echo # This inserts an empty line in output.echo "We are currently in the following directory."/bin/pwdechoecho "This directory contains the following files"/bin/ls -l .

樣本2.

#!/bin/bash# Auto mail for system info/bin/date +%F >> /tmp/sysinfoecho >> /tmp/sysinfoecho "Disk info:" >> /tmp/sysinfo/bin/df -h >> /tmp/sysinfoecho >> /tmp/sysinfoecho "Online users:" >> /tmp/sysinfo/usr/bin/who | /bin/grep -v root >> /tmp/sysinfoecho >> /tmp/sysinfoecho "Memory info:" >> /tmp/sysinfo/usr/bin/free -m >> /tmp/sysinfoecho >> /tmp/sysinfo# Write to root /usr/bin/write root < /tmp/sysinfo && /bin/rm -f /tmp/sysinfo# crontab -e# 0 9 * * 1-5 ./sysinfo.sh




Shell結構

1、#!指定執行指令碼的Shell

2、#注釋行,描述該指令碼的作用,負責人等資訊

3、命令和控制結構

 

建立shell程式的步驟

第一步:建立一個包含命令和控制結構的檔案。 

第二步:修改這個檔案的許可權使它可以執行:chmod u+x 

第三步:執行 ./example 或 sh example 或 . sysinfo.sh

  

Shell變數

變數:是shell傳遞資料的一種方法,用來代表每個取值的符號名。 

Shell有兩類變數:臨時變數和永久變數。 

臨時變數是shell程式內部定義的,其使用範圍僅限於定義它的程式,對其它程式不可見。包括:使用者自訂變數、位置變數。

永久變數是環境變數,其值不隨shell指令碼的執行結束而消失。

 

1、使用者自訂變數

使用者定義的變數由字母或底線開頭,由字母、數字或底線序列組成,區分大小寫。變數名長度沒有限制。在使用變數值時,要在變數名前加上首碼“$”。 

 

2、設定和使用變數

設定變數:習慣上用大寫字母來命名變數。變數名只能以字母表中的字元開頭,不能用數字。 

變數賦值:“=”兩邊沒有空格。 

定義時賦值,如NUM=1 

將一個命令的執行結果賦給變數,如:TIME=`date`;TIME=$(date +%F)

將一個變數的值賦給另一個變數,如:B=120 ; A =$B 

使用echo命令查看變數值。例如:echo $A 

 

3、包含多個字的變數: 

NAME=Mike Ron#運行時出錯,應改為:

NAME=“Mike Ron” 或 $NAME=‘Mike Ron’ 

 

4、單引號與雙引號的區別

比如:定義DATE=$(date +%F)

time=”time is $DATE”

echo $time

time='time is $DATE'

echo $time

 

單引號之間的內容原封不動地指定給了變數。 

 

5、set查看系統中定義的所有變數

unset刪除所定義的變數

 

6、位置變數

Shell解釋執行使用者命令時,將命令列的第一個部分作為命令名,其它部分作為參數。由出現在命令列上的位置確定的參數稱為位置參數。 

例如: 

ls -l file1 file2 file3 

$0 這個程式的檔案名稱 ls -l 

$n 這個程式的第n個參數值,n=1~9 

 

7、特殊變數

$* 這個程式的所有參數 

$# 這個程式的參數個數 

$$ 這個程式的PID 

$! 執行上一個後台命令的PID 

$? 執行上一個命令的傳回值

 

 

樣本-autobak.sh

#!/bin/bash# backup files by dateDATE=$(/bin/date +%Y%m%d)/bin/tar -cf /backup/$1.$DATE.tar $1 > /dev/null 2>> /backup/$1.bak.log/bin/gzip  /backup/$1.$DATE.tarif [ $? -eq 0 ] then    echo "$1 $DATE backup successfully" >> /backup/$1.bak.logelse    echo "ERROR: failure $1 $DATE backup" >> /bakup/$1.bak.logfi# crontable -e# 0 3 * * 2,5 script

 

樣本-special.sh

#!/bin/bash# A test script for special varecho '$# is' $#echo '$* is' $*echo '$0 is' $0echo '$? is' $?echo '$$ is' $$echo '$2 is' $2

Shell命令

1、read命令[互動方式]

read USERNAME

樣本-read.sh

#!/bin/bash# A test script for readread first second thirdecho "Your first parameter is $first"echo "Your second parameter is $second"echo "Your third parameter is $third"

#sh -x 命令:單步調試顯示執行

 

 

2、expr命令,對整型變數進行運算

如:expr 3 + 5 #”+”號之間須有空格

expr $var1 - 5 

expr $var1 / $var2 

expr $var3 \* 10 #”*”號需要轉義符”\”

 

 

複雜的運算: 

expr `expr 5 + 7`/$var4

 

將運算結果賦予變數: 

var4=` expr $var1 / $var2 ` 

 

樣本-expr.sh

#!/bin/bash# A test for expra=10b=20c=30val1=$(expr $a + $b + $c)echo "The value of val1 is $val1"val2=$(expr $c / $b)echo "The value of val2 is $val2"val3=`expr $a \* $b`echo "The value of val3 is $val3"val4=`expr $a + $c / $b`echo 'The value of $a + $c / $b is ' $val4



在shell編程中對於$2的描述正確的是

一般情況下是這樣的:

<ShellScript> <option...>
例:
shell.sh abc bcd

那麼$1就是abc $2就是bcd 即命令列輸出的第二個option(參數)
 
誰有linux shell編程初學到精通的隨書光碟片?

shell裡最經典的一本書。《進階bash指令碼指南》

裡面汗初級到進階shell提示。方法。

百度搜一下一堆。
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.