日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【shell】shell编程(一)-入门

發布時間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【shell】shell编程(一)-入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  如今,不會Linux的程序員都不意思說自己是程序員,而不會shell編程就不能說自己會Linux。說起來似乎shell編程很屌啊,然而不用擔心,其實shell編程真的很簡單。
背景

  • 什么是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還是我們使用最多的。

具體的可以參考:http://www.cnblogs.com/qlqwjy/p/7575609.html


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

第三行中的echo是linux中的輸出命令,該行的意思很明顯的就是輸出hello world!。echo -n xxx表示輸出完之后不換行。與之類似的還有printf命令

?         退出不執行腳本的命令是: exit 1

?

echo輸出的字符串總結  

?能否引用變量 ?| ?能否引用轉移符 ?| ?能否引用文本格式符(如:換行符、制表符)

單引號 ?| ? ? ? ? ? 否 ? ? ? ? ? | ? ? ? ? ? ? 否 ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? 否

雙引號 ?| ? ? ? ? ? 能 ? ? ? ? ? | ? ? ? ? ? ? 能 ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? 能

無引號 ?| ? ? ? ? ? 能 ? ? ? ? ? | ? ? ? ? ? ? 能 ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? 否? ? ? ? ? ? ? ? ? ??

?

  • 運行第一個shell程序

第一種運行方式:

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

vi helloword.sh 。。。復制代碼。。。 :wq 保存退出

?

?賦予一個shell文件可運行權限:

chmod +x helloworld.sh

?

?

最后執行:

./helloworld.sh

?
注意:

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

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

?

第二種運行方式:
除了以上執行方法,我們還可以直接指定shell來運行: (/bin/sh可以簡寫為sh ,也可以加上-x 參數查看執行過程,sh -n xxx.sh可以檢查腳本的語法是否有錯誤)

/bin/sh helloworld.sh

?

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

?

?

  • 普通用戶運行腳本的權限:

(1)如果希望普通用戶以? sh 腳本? (第二種運行方式)的方式運行腳本需要下面權限:

  • 對腳本有運行(x)權限。
  • 對腳本所在目錄有rx權限。
  • ?

    (2)如果希望普通用戶以腳本路徑 (第一種運行方式)運行需要下列權限:

  • 對腳本有rx權限
  • 對腳本所在目錄有rx權限
  • ?

    ?

    ?

    • 變量

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

    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變量。注意上面的$(path)是圓括號。

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

    注意:第三行的符號不是單引號,是鍵盤上“~”這個按鍵

    好啦,到此,對shell編程已經有初步認識了,也會使用變量了。到此,看起來shell編程是不是很的簡單。沒錯,其實真的就這么一回事。

    ?

    只讀變量

    使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。

    下面的例子嘗試更改只讀變量,結果報錯:

    #!/bin/bash myUrl="http://test.com" readonly myUrl myUrl="http://test2.com"

    ?

    運行腳本,結果如下:

    /bin/sh: NAME: This variable is read only.

    ?

    ?

    ?

    刪除變量

    使用 unset 命令可以刪除變量。語法:

    unset variable_name

    ?

    變量被刪除后不能再次使用。unset 命令不能刪除只讀變量。

    實例

    #!/bin/sh myUrl="http://test.com" unset myUrl echo $myUrl

    ?

    ?

    ?

    接下來可以學習shell編程二:http://www.cnblogs.com/qlqwjy/p/7745968.html

    ?

    總結:

    創建一個sh文件?? vi? hello.sh

    用vim編輯完成? :wq保存退出

    賦予可運行權限? chmod +x hello.sh

    運行sh文件  ./hello.sh??   (必須加./

    ?

    總結

    以上是生活随笔為你收集整理的【shell】shell编程(一)-入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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