shell重溫---基礎篇(shell變量&字符串以及git GUI運行shell腳本方式)

既然是基礎篇那確定是須要對shell的各類須要注意的基本點進行說明了。接下來就是show time...php

   shell呢,是一個用C語言編寫的應用程序,是用戶使用linux的橋樑。因此呢,他既是一種命令語言,同時呢仍是一種程序設計語言。shell腳本(shell script),是一種爲shell編寫的腳本程序。業界所說的shell一般都是指shell腳本,可是各位看官要知道的是,shell和shell script是兩個不一樣的概念。因爲習慣的緣由,簡介起見,本文出現的「shell編程」都是指shell腳本編程,而不是指開發shell自身,各位看官千萬要注意哈。java

    其次呢,shell編程跟java、php編程同樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就能夠了。可是linux的shell種類不少,本人所學習的是其中的免費版本bash shell。接下來就是正題了。linux

    shell腳本開頭呢,必需要註明本身用的是那個解釋器。保存的文件後綴名爲***.sh就行了。我用的是bash,因此開頭須要註上#!/bin/bash
git

    而後就是輸出了,跟php相似,echo就能夠輸出東西:echo "hello word!",就能夠輸出內容了。我是在windows上使用git GUI來運行的,具體運行方式爲./test.sh,而後回車就運行了這個test.sh文件。最主要的是shell裏沒有相似php的;似得分界符,只要換行就是另外的輸出了。shell

    再來就是shell中的變量問題了,跟php的變量命名規則差很少,惟一不一樣的就是不須要使用$開頭來命名變量,可是輸出或者使用變量的時候必須使用$。具體方式爲your_name="luyaran"(變量命名),echo $your_name。還有就是我們phper的習慣是命名時習慣性的會加上空格:$your_name = "luyaran";,可是在這裏我想說錯了,等號兩邊不能加上空格,加上就算是常規性的defined。我剛剛開始用shell的時候就常常踩進這個坑啦。另,變量還有一種輸出方式:echo "${your_name} is my girlfriend",其主要目的是爲了幫助解釋器識別變量邊界。比較個性的是咱們還可使用readonly這個命令來使咱們的變量只具備讀的屬性而不能修改,看起來比較高達上的樣子。而後嘞,咱們就能夠用unset加變量名的方式來刪除咱們所定義的變量。接下來按照php的套路,咱們最後要肯定的就是變量的類型,按照官方解釋以下:編程

 

運行shell時,會同時存在三種變量:windows

  • 1) 局部變量 局部變量在腳本或命令中定義,僅在當前shell實例中有效,其餘shell啓動的程序不能訪問局部變量。
  • 2) 環境變量 全部的程序,包括shell啓動的程序,都能訪問環境變量,有些程序須要環境變量來保證其正常運行。必要的時候shell腳本也能夠定義環境變量。
  • 3) shell變量 shell變量是由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行

    好的,而後就到了字符串這塊了。其實不外乎獲取字符串的長度,截取字符串,拼接字符串等有限的幾個方面。在開始以前呢,還有一點須要提早說明的就是單雙引號之間的區別和用途:
bash

  • 單引號裏的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
  • 單引號字串中不能出現單引號(對單引號使用轉義符後也不行)。
  • 雙引號裏能夠有變量
  • 雙引號裏能夠出現轉義字符

    字符串拼接與咱們php的樣式略微的有差別,那就是沒有鏈接符:編輯器

 

your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1

    獲取字符串長度:學習

 

string="abcd" echo ${#string} #輸出 4

    提取子字符串(如下示例是從字符串第二個開始,截取四個字符):

 

string="runoob is a great site" echo ${string:1:4} # 輸出 unoo

    字符串查找(如下示例的「`」是Esc鍵下面的那個):

 

string="runoob is a great company" echo `expr index "$string" is` # 輸出 8

    勉強寫得差很少了,各位看官見笑了啊,本人純屬小白,這篇博客只是用來作筆記而已,勿噴哈。。。

    關於以後的,本人會在學習過程當中,陸續接上的。。。

 

   原文連接:https://blog.csdn.net/luyaran/article/details/79353093

相關文章
相關標籤/搜索