Linux Bash Shell學習筆記

来源:http://www.cnblogs.com/yuanshaoqian/archive/2016/09/01/5831646.html
-Advertisement-
Play Games

參數擴展: 1.被名稱引用的參數稱作變數2.被數字引用的參數稱作位置參數3.被特定符號引用的參數具有特殊的含義和用途,被稱作Bash的特殊內部變數引用。 基本參數擴展:字元$會引導參數擴展。大括弧是可選的,但是大括弧可以保護待擴展的變數,使得緊跟大括弧後面的內容不會被擴展。例: 對於$9後面的參數也 ...


參數擴展:


1.被名稱引用的參數稱作變數
2.被數字引用的參數稱作位置參數
3.被特定符號引用的參數具有特殊的含義和用途,被稱作Bash的特殊內部變數引用。

基本參數擴展:
字元$會引導參數擴展。大括弧是可選的,但是大括弧可以保護待擴展的變數,使得緊跟大括弧後面的內容不會被擴展。
例:

1 $ PARAMETER
2 $ {PARAMETER}
3 #如果參數名後跟其他字元,大括弧是必須的。
4 
5 $ WORD=car
6 $ echo $WORDs
7 $ echo ${WORD}s 8 cars

 

 對於$9後面的參數也是要用大括弧的。
註意:參數名是大小寫敏感的。

間接參數擴展:

1 $ PARAMETER=TEMP
2 $ TEMP="It's indirect"
3 $ echo $PARAMETER
4   TEMP
5 $ echo ${!PARAMETER}
6 it's indirec

 

大小寫修改(Bash4.0):

 1 $ echo ${PARAMETER^}
 2 #將參數的第一個字元改為大寫
 3 $ echo ${PARAMETER^^}
 4 #將參數的全部字元改為大寫
 5 $ echo ${PARAMETER,}
 6 #將參數的第一個字元改為小寫
 7 $ echo ${PARAMETER,,}
 8 #將參數的全部字元改為小寫
 9 $ echo ${PARANETER~}
10 #將參數的第一個字元改為大寫
11 $ echo ${PARANETER~~}
12 #將參數的全部字元改為大寫

 

大小寫修改實例:

1 # for file in *.txt
2 >do
3 >mv "$file" "${file,,}"
4 >done

 

變數名擴展:

1 ${!PREFIX*}
2 ${!PREFIX@}
3 #列出以字元串PREFI開頭的所有變數名

 

例:列出以BASH開頭的所有變數名

1 $echo ${!BASH*}
2 BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV BASH_CMDS BASH_COMMAND BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION

字元串移除:

1 ${PARAMETER#PATTERN}
2 ${PARAMETER##PATTERN}
3 #移除從參數值的開頭匹配指定模式的字元串
4 ${PARAMETER%PATTERN}
5 ${PARAMETER%%PATTERN}
6 #移除從參數值的結尾匹配指定模式的字元串
7 #”#“和”%“表示移除匹配指定模式的最短文本,”##“和”%%“表示移除匹配模式的最長文本。

 

字元串移除實例:

 1 $ MYSTRING="This is used for removing string"
 2 $ echo ${MYSTRING#* }
 3 is used for removing string
 4 
 5 $echo ${MYSTRING##* }
 6 string
 7 
 8 $echo ${MYSTRING% *}
 9 This is used for removing
10 
11 $echo ${MYSTRING%% *}
12 This

 

參數用途,提取文件名的一部分:

 1 $ FILENAME=linux_bash.txt
 2 
 3 $ echo ${FILENAME%.*}                       #移除文件名的尾碼
 4 linux_bash
 5 
 6 $ echo ${FILENAME##*.}                     #移除文件名,保留尾碼
 7 txt 
 8 
 9 FILENAME=/home/book/linux_bash.txt
10 
11 $ echo ${FILENAME%/*}                      #移除文件名,保留目錄名
12 /home/book
13 
14 $ echo ${FILENAME##*/}                    #移除目錄名,保留文件名
15 linux_bash.txt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當天: select * from T_news where datediff(day,addtime,getdate())=0 最近三天: select * from T_news where datediff(day,addtime,getdate())<= 2 and datediff(day ...
  • 參見 HDP2.4安裝(五):集群及組件安裝 ,安裝配置的spark版本為1.6, 在已安裝HBase、hadoop集群的基礎上通過 ambari 自動安裝Spark集群,基於hadoop yarn 的運行模式。 目錄: Spark集群安裝 參數配置 測試驗證 Spark集群安裝: 在ambari ...
  • Spark 作為一個以擅長記憶體計算為優勢的計算引擎,記憶體管理方案是其非常重要的模塊; Spark的記憶體可以大體歸為兩類:execution和storage,前者包括shuffles、joins、sorts和aggregations所需記憶體,後者包括cache和節點間數據傳輸所需記憶體;在Spark 1 ...
  • 瞭解Hive的都知道Hive有三種使用方式——CLI命令行,HWI(hie web interface)瀏覽器 以及 Thrift客戶端連接方式。 為了體驗下HWI模式,特意查詢了多方的資料,都沒有一個完整的部署方案,經過一下午的踩坑,這裡特意總結一下,希望為後人節省點時間。 先放個圖興奮一下! 參 ...
  • 大概思路如下: 使用Linux自帶的rsyslog服務來做底層,然後再使用mysql與rsyslog的模板來存儲文件,並且以web來進行顯示出來。<模板的存儲以日期的樹形結構來存儲,並且以伺服器客戶端IP為文件名進行劃分。 最終的效果如下圖: 大概步驟如下: 1.配置好rsyslog server的 ...
  • 轉自:http://www.cnblogs.com/zhbzz2007/p/4283194.html 在windows平臺下,使用系統的記事本以UTF-8編碼格式存儲了一個文本文件,但是由於Microsoft開發記事本的團隊使用了一個非常怪異的行為來保存UTF-8編碼的文件,它們自作聰明地在每個文件 ...
  • 轉載請標明:http://www.cnblogs.com/winifred-tang94/ 要啟動vi編輯器,直接在命令提示符下輸入vi命令即可,如果要編輯一個文件則使用“vi 文件名”的方式。如下圖所示,視窗的最後一行是狀態欄,有文件名、文件的大小、文件的讀寫屬性: Vi編輯器有三種操作方式: A ...
  • 1、概述 大家在安裝完虛擬機後,預設安裝瞭如下圖的兩塊虛擬網卡——VMnet1和VMnet8,其中VMnet1是host網卡,用於host方式連接網路;VMnet8是NAT網卡,用於NAT方式連接網路的,並且它們的IP地址是隨機生成的。 VMware提供了三種工作模式,分別是bridged(橋接模式 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...