日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Shell编程入门(第二版)(上)

發布時間:2025/3/17 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell编程入门(第二版)(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單的示例Shell程序

示例1.

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

示例2.

#!/bin/bash # Auto mail for system info/bin/date +%F >> /tmp/sysinfo echo >> /tmp/sysinfoecho "Disk info:" >> /tmp/sysinfo /bin/df -h >> /tmp/sysinfo echo >> /tmp/sysinfoecho "Online users:" >> /tmp/sysinfo /usr/bin/who | /bin/grep -v root >> /tmp/sysinfo echo >> /tmp/sysinfoecho "Memory info:" >> /tmp/sysinfo /usr/bin/free -m >> /tmp/sysinfo echo >> /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 ] thenecho "$1 $DATE backup successfully" >> /backup/$1.bak.log elseecho "ERROR: failure $1 $DATE backup" >> /bakup/$1.bak.log fi# crontable -e # 0 3 * * 2,5 script

?

示例-special.sh

#!/bin/bash # A test script for special varecho '$# is' $# echo '$* is' $* echo '$0 is' $0 echo '$? 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?命令:單步調試顯示執行

?

?

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

如: 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=10 b=20 c=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编程入门(第二版)(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。