手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Shell編程最基礎知識

[日期:2018-09-28] 來源:Linux社區  作者:Linux [字體: ]

背景
什么是shell編程

高大上的解釋,往往讓人摸不住頭腦。一句話概括就是:shell編程就是對一堆Linux命令的邏輯化處理。
為什么要會shell編程

舉個簡單的例子,我們做Javaweb開發的,在以前,如果要在本地將程序打包,然后部署到遠程服務器(拋開現在的ci, 原始的方法), 我們以前的做法通常會經歷如下幾個步驟:

拉取最新代碼(git pull)
編譯打包
上傳并部署到遠程服務器

每次打包都要經歷這一個階段,效率低又煩躁。而此時,我們可以編寫一個shell腳本,然后每次只需要運行一下這個shell腳本,即可實現打包部署這一系列動作,徹底解放雙手,多好
入門
第一個shell程序

#!/bin/bash
#第一個shell小程序
echo hello world!

以上,我們的第一個shell小程序就完成了,結果當然是輸出我們熟悉的hello world。

第一行表示我們選擇使用bash shell。

shell中#符號表示注釋。shell的第一行比較特殊,一般都會以#!開始來指定使用的shell類型。在linux中,除了bash shell以外,還有很多版本的shell, 例如zsh、dash等等...不過bash shell還是我們使用最多的。

第二行以#符號開始,表示本行是注釋,運行的時候是不會運行本行的。

第三行中的echo是linux中的輸出命令,該行的意思很明顯的就是輸出hello world!
運行第一個shell程序

新創建一個文件(hello_world.sh), 然后將以上代碼復制到此文件中,然后需要賦予此文件的可執行權限。

chmod +x hello_world.sh

最后執行:

./hello_world.sh

在linux中,后綴名幾乎是可以任意的或者沒有后綴名,一般將shell保存為xxx.shell是為了看起來更直觀。

如果直接執行hello_world.sh,這時會默認從$PATH環境變量中去尋找,這時,由于我們為將此文件配置在環境變量中,因此會找不到。所以,我們用了"."這個符號,表示從當前目錄找。
除了以上執行方法,我們還可以直接指定shell來運行:

/bin/sh hello_world.sh

這兒我們指定用了/bin/sh來執行,這時hello_world.sh中指定的/bin/bash將不會生效。

變量

編程豈能沒有變量?對吧?

shell編程中分為兩種變量,第一種是我們自己定義的變量(自定義變量),第二種是Linux已定義的環境變量(環境變量, 例如:$PATH, $HOME 等..., 這類變量我們可以直接使用)。

#!/bin/bash
#使用環境變量
echo $PATH
#自定義變量hello
hello="hello world"
echo $hello

以上演示了自定義變量和系統環境變量的用法,使用很簡單,就是使用$符號加上變量名就行了。記住:定義變量不用$符號,使用變量要加$就行了。

在第5行中,我們在自定義變量時,使用了雙引號,在shell編程中, 如果變量出現空格或者引號,那么也必須加引號, 否則就可以省略。

還有一點需要注意,定義變量的時候,“=”左右千萬不要有空格啊。

將linux命令執行結果賦值給變量

#!/bin/bash
path=$(pwd)
files=ls -al
echo current path: $path
echo files: $files

以上2行和第3行分別演示了兩種方式來將Linux命令執行結果保存到變量。

第2行將pwd執行結果(當前所在目錄)賦值給path變量。

第3行將ls -al命令執行結果(列出當前目錄下所有的文件及文件夾)賦值給變量

Linux公社的RSS地址http://www.vnrggh.live/rssFeed.aspx

本文永久更新鏈接地址http://www.vnrggh.live/Linux/2018-09/154483.htm

linux
相關資訊       shell編程 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台