Shell 語法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

1. 運行sh腳本的2種方法: ./AAA。sh? 或者 sh AAA.sh 。(其實后輟名不重要。是txt也是可以運行的。)

2. 定義變量 如:your_name="runoob.com"
? ?變量名和等號之間不能有空格,


命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭。
中間不能有空格,可以使用下劃線(_)。
不能使用標點符號。
不能使用bash里的關鍵字。

3. 使用一個定義過的變量,只要在變量名前面加美元符號即可,如:


your_name="qinjx"?
echo $your_name 或 echo ${your_name} 就會輸出 qinjx 。
變量名外面的花括號是可選的,加不加都行,加花括號是為了幫助解釋器識別變量的邊界。

4.已定義的變量,可以被重新定義,如:


your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name


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


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

6. 獲取字符串長度 string="abcd" , echo ${#string} #輸出 4

7. 定義字符串:

單引號
str='this is a string'
單引號字符串的限制:


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

雙引號
your_name='qinjx'
str="Hello, I know your are $your_name! "
雙引號的優點:


雙引號里可以有變量
雙引號里可以出現轉義字符

8. 提取子字符串
從字符串第 2 個字符開始截取 4 個字符:


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

9. 查找子字符串
查找字符 "i 或 s" 的位置:


string="runoob is a great company"
echo `expr index "$string" is`? # 輸出 8
注意: 以上腳本中 "`" 是反引號,而不是單引號 "'",不要看錯了哦。反引號:然后按1旁邊的鍵。


10. Shell 數組
bash支持一維數組(不支持多維數組),并且沒有限定數組的大小。
數組元素的下標由0開始編號。
用括號來表示數組,數組元素用"空格"符號分割開。數組名=(值1 值2 ... 值n)

1)讀取數組
讀取數組元素值的一般格式是:${數組名[下標]}

array=(q q q q)
echo ${array[2]} 輸出 q? ?, array[2]=wewe 后再 echo ${array[2]} 輸出 wewe 。




使用@符號可以獲取數組中的所有元素,例如:


echo ${array[@]} 輸出 q q wewe q

2)獲取數組的長度
獲取數組長度的方法與獲取字符串長度的方法相同,例如:


# 取得數組元素的個數
length=${#array_name[@]}? 或者 length=${#array_name[*]}

# 取得數組單個元素的長度
lengthn=${#array_name[n]}

echo ${#array[2]} 輸出 4

11. Shell 注釋
以"#"開頭的行就是注釋,會被解釋器忽略。


sh里沒有多行注釋,只能每一行加一個#號。只能像這樣:


#--------------------------------------------
# 這是一個注釋
# author:菜鳥教程
# site:www.runoob.com
# slogan:學的不僅是技術,更是夢想!
#--------------------------------------------
##### 用戶配置區 開始 #####
#
#
# 這里可以添加腳本描述信息
#?
#
##### 用戶配置區 結束? #####
如果在開發過程中,遇到大段的代碼需要臨時注釋起來,過一會兒又取消注釋,怎么辦呢?


每一行加個#符號太費力了,可以把這一段要注釋的代碼用一對花括號括起來,定義成一個函數,沒有地方調用這個函數,這塊代碼就不會執行,達到了和注釋一樣的效果。

?

?

?

參考:http://www.runoob.com/linux/linux-shell-variable.html

?

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450097.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450097.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450097.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

感知機模型的對偶形式[轉載]

轉自:https://blog.csdn.net/jaster_wisdom/article/details/78240949#commentBox 1.區分一下易混淆的兩個概念,梯度下降和隨機梯度下降: 梯度下降:一次將誤分類集合中所有誤分類點的梯度下降; 隨機梯度下降:隨機選取一…

Android Studio常用快捷鍵

注:本文大部分內容轉載自——碼個蛋微信公眾號里的“熟練這些,才會知道 Android studio 有多高效”由于是微信公眾號通過傳送門看的,沒有原文鏈接。 顯示方法的參數 當我們使用一個方法的時候,會在剛開始的時候顯示出所有的參數。…

中國城市政治地位,政治地位決定一切!!!

第一政治等級:省級城市(包括直轄市、特別行政區)6個 北京市、上海市、天津市、重慶市、香港特別行政區、澳門特別行政區 第二政治等級:副省級城市(含五個計劃單列市) 15個 沈陽市、大連市&…

Shell 字符串截取

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Linux 的字符串截取很有用。有八種方法。 假設有變量 varhttp://www.aaa.com/123.htm 1. # 號截取,刪除左邊字符,…

go語言漸入佳境[6]-operator運算符

運算符和其他語言一樣,Go語言支持多種運算符,用于對變量進行運算。12345678910111213package mainimport "fmt"func main(){ //math() //relation() //logic() //wei() Assign()}算術運算符123456789101112func math(){ a : 4 b:2 fmt.Printf(…

Android應用開發—setResult()的調用時機

本文轉載自setResult()的調用時機,此處做了重新的排版,只是感覺markdown的排版比較好看些,侵刪。 今天遇到這樣一個問題,我在Activity-A中用startActivityForResult()方法啟動了Activity-B,并且在B中通過setResult()方…

記錄騰訊云中礦機病毒處理過程(重裝系統了fu*k)

2019-1-21日常上班的周一 剛想學學kafka,登錄與服務器看看把,誰知ssh特別慢,很奇怪,我以為是我網速問題,斷了wifi,換了網線,通過iterm想要ssh rootx.x.x.x,但是上不去? 就…

從創業失敗中學到的七條教訓

摘要:每個創業者不可能首次創業就能成功。他們的失敗經驗,或許可以指導其他創業者獲得迅速成功。Joshua Hays在文章《7 things I learned from failing that you can avoid》總結了創業失敗后獲得的七條教訓,希望其他創業者可以從中有所收獲&…

unexpected EOF while looking for matching ``‘

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 只是簡單的測試一個shell 腳本,報錯如題。 原因: 雙引號格式不對。 引號切換為英語格式重新輸入,再運…

對象反序列化出現類型不匹配的情況(spring-boot-devtools)

目前在做springboot項目的shiro session redis共享功能。但是有一個對象我把它放到redis中之后再取出來就會出現類型不匹配的異常 AuthorizationUser user (AuthorizationUser) cache.getSuper(key); 異常信息: java.lang.ClassCastException: com.ch.evaluation.a…

最后一周總結

1) 回歸第一周目標 對于第一周的目標,在提高代碼量,多寫多練方面達到了,之前結點編程時還不是很熟悉python,現在寫的比較熟練了,同時學習了一門新的語言Julia,在學習的過程中也看了Julia和Flux的…

音視頻多媒體協議相關資料匯總

未知問題: 編碼,封裝,協議的區別: 如何將TS源流重新封裝并通過P2P協議傳輸在安卓終端和蘋果終端播放封裝 介紹完了視頻編碼后,再來介紹一些封裝。沿用前面的比喻,封裝可以理解為采用哪種貨車去運輸&…

谷歌地圖VS蘋果地圖:大數據領域競爭

摘要:iOS 6推出之后,爭議最大的是什么?蘋果地圖。蘋果地圖成為人們抨擊iOS 6的首選,而蘋果放棄谷歌地圖選擇自力更生是迫不得已。蘋果和谷歌之間的競爭領域可以用三個字來概括:大數據。谷歌擁有大數據,而蘋…

Shell 參數傳遞、 $* 與 $@ 區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 傳遞參數 腳本內獲取參數的格式為: $n。n 代表一個數字,1 為執行腳本的第一個參數, 2 為執行腳本的第…

微軟正在考慮將Windows默認瀏覽器改為Chromium

據外媒報道,微軟正在構建一個基于Chromium的瀏覽器,代號為Anaheim,目標是取代Windows中的Edge。 Microsoft Edge是微軟于2015年推出的瀏覽器,該瀏覽器取代了IE成為Windows 10的默認瀏覽器。盡管如此,Microsoft Edge并沒…

css文本屬性

text-align文本水平對齊屬性 取值 left(默認) right center text-indent 文本縮進屬性 單位可以是px也可以是em(字符) text-decoration 文本裝飾屬性 取值 underline(下劃線) overline(上劃線) line-though(刪除線) 轉載于:https://www.cnblogs.com/c-aha/p/10298422.html

三次握手的第三個ACK包丟了,會發生什么?

轉載自三次握手的第三個ACK包丟了,TCP的處理方式 三次握手的第三個ACK包丟了,客戶端認為連接建立,寫數據時,會觸發RST。 當Client端收到Server的SYNACK應答后,其狀態變為ESTABLISHED,并發送ACK包給Server&a…

運營商與廠商發力 智能機進入700元以下時代

千元智能手機的成功,并沒有讓運營商以及手機廠商感到滿足。繼中國電信宣布重點打造600元智能手機后,近日,中國聯通也表態將發力700元以下智能手機市場。而運營商的表態立刻引來了多家手機廠商的呼應,產品價格的繼續下探&#xff0…

輸入一個數,判斷他是不是質數

思路:先給一個數字x,然后讓這個數字x從2開始除,如果 x 從 2 除到 (x-1) 能被整除,那這就不是質數.如果不能被整除,那就是質數. 當然如果x小于2,那x必然不是質數,也不是合數. #輸入一個數,判斷他是不是質數 x int(input("請輸入一個數字:")) #先輸入一個數字 co…

一分鐘了解四層/七層反向代理

轉自公眾號:架構師之路今天花幾分鐘簡單和大家解釋一下。場景:訪問用戶通過proxy請求被訪問的真實服務器 路徑:用戶 -> proxy -> real-server什么是代理? 回答:[proxy]代表[訪問用戶],此時proxy是代理…