shell初學—幾個簡單的shell指令碼

來源:互聯網
上載者:User
例1
#!/bin/shcase ${1##*.tar.} in     bz2)         tar jxvf $1         ;;     gz)         tar zxvf $1         ;;     *)         echo "wrong file type"esac
$1 表示運行該指令碼時的第一個命令列參數${1##*.tar.} 表示第一個命令列參數去掉*.tar.後剩下的部分。比如運行指令碼時用 ./mytar.sh  bak.tar.gz, 那麼$1就是指bak.tar.gz, ${1##*.tar.} 就是gz

例2
#!/bin/bash 
UNPACK=1
if [ ${1##*.} = bz2 ] ; then
        TEMP=${1%.*}
        if [ ${TEMP##*. } = tar ] ; then
                tar jxvf $1
                UNPACK=$?
                echo This is a tar.bz2 package
        else
                bunzip2 $1
                UNPACK=$?
                echo This is a bz2 package
        fi
fi

上面紅色標記的地方 ${1##*.} = bz2 這個1後面的兩個##,跟著一個*和一個點 是什麼意思啊

還有就是第二個紅色標記得的地方 TEMP後面得兩個 " 1%.* " 是什麼意思 

我只知道這個指令碼是解壓檔案得 根據不同得尾碼名 選擇不同得解壓命令

兩個標記紅色地方我很難理解
其中:$?表示:
表示上一個命令傳回值,一般如果是 0 表示 運行正確,非0 表示運行出錯
shell編程1)編寫SHELL指令碼,能將檔案d1和d2整合為檔案d3。2)編寫兩個shell 指令碼s1、s2,其中s1能夠啟動3個進程,進程名稱分別為a,b,c,每個進程的代碼如下:int main(){ while(1) {};return 0;}s2 能夠殺死這3個進程,並且要求s2的執行不允許人為指定參數。

1) cat d1 d2 >d3 # 前提是文字檔,還可以使用join
2)s1.sh

#!/bin/bash
/path/a &
/path/b &
/path/c &

s2.sh
#!/bin/bash
kill -9 $(pgrep a) #kill -9表示強制殺死進程
#或者kill -9 $(ps aux | grep -w a | grep -v grep | awk '{print $2}')
kill -9 $(pgrep b)
#同上
kill -9 $(pgrep c)
 #同上

另外,講一下pgrep命令。

pgrep 是通過程式的名字來查詢進程的工具,一般是用來判斷程式是否正在運行。在伺服器的配置和管理中,這個工具常被應用,簡單明了;

 

用法:

 

#ps 參數選項   程式名

 

常用參數

 

-l  列出程式名和進程ID;
-o  進程起始的ID;
-n  進程終止的ID;

 

舉例:

 

[root@localhost ~]# pgrep -lo httpd
4557 httpd

[root@localhost ~]# pgrep -ln httpd
4566 httpd

[root@localhost ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd

[root@localhost ~]# pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.