shell腳本的使用該熟練起來了,你說呢?(篇三)

2020-12-22 酷扯兒

本文轉載自【微信公眾號:羽林君,ID:Conscience_Remains】經微信公眾號授權轉載,如需轉載與原文作者聯繫

shell echo

Shell echo命令

Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用於字符串的輸出。命令格式:

echo string

您可以使用echo實現更複雜的輸出格式控制。

1.顯示普通字符串:

echo "It is a test"

//這裡的雙引號完全可以省略,以下命令與上面實例效果一致

echo It is a test

2.顯示轉義字符

echo "\"It is a test\""

結果將是:

同樣,雙引號也可以省略

3.顯示變量

read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變量

read

name

echo "$name It is a test"

以上代碼保存為hello_shell.sh,name 接收標準輸入的變量,結果將是:

4.顯示換行

echo -e "OK! \n" # -e 開啟轉義

輸出結果:

5.顯示不換行

echo -e "OK! \c" # -e 開啟轉義 \c 不換行

6.顯示結果定向至文件

echo "It is a test" > lynfile

./hello_shell.sh 執行腳本,當前目錄下就會生成一個 lynfile 文件,裡面的內容為It is a test

7.原樣輸出字符串,不進行轉義或取變量(用單引號)

echo '$name\"'

8.顯示命令執行結果

echo `date`

注意: 這裡使用的是反引號 `, 而不是單引號 '。

結果將顯示當前日期

shell printf

Shell printf 命令

我們學習了 Shell 的 echo 命令,我們再來學習 Shell 的另一個輸出命令 printf。

printf 命令模仿 C 程序庫(library)裡的 printf() 程序。

printf 由 POSIX 標準所定義,因此使用 printf 的腳本比使用 echo 移植性好。

printf 使用引用文本或空格分隔的參數,外面可以在 printf 中使用格式化字符串,還可以制定字符串的寬度、左右對齊方式等。默認 printf 不會像 echo 自動添加換行符,我們可以手動添加 \n。

printf 命令的語法:

printf format-string [arguments...]

參數說明:

format-string: 為格式控制字符串arguments: 為參數列表。實例如下:

echo "echo Hello, Shell" lyn, action

printf "printf Hello, Shell\n" lyn, action

接下來,我來用一個腳本來體現printf的強大功能:

printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg

printf "%-10s %-8s %-4.2f\n" 張三 男 66.1234

printf "%-10s %-8s %-4.2f\n" 李四 男 48.6543

printf "%-10s %-8s %-4.2f\n" 王五 女 47.9876

執行腳本,輸出結果如下所示:

更多實例:

# format-string為雙引號

printf "%d %s\n" 1 "abc" # 單引號與雙引號效果一樣

printf '%d %s\n' 1 "abc"

# 沒有引號也可以輸出

printf %s abcdef

printf "\n"

# 格式只指定了一個參數,但多出的參數仍然會按照該格式輸出,format-string 被重用

printf "%s\n" abc def

printf "%s %s %s\n" a b c d e f g h i j

# 如果沒有 arguments,那麼 %s 用NULL代替,%d 用 0 代替

printf "%s and %d \n"

printf的轉義序列

實例

printf "a string, no processing:<%s>\n" "A\nB"

printf "a string, no processing:<%b>\n" "A\nB"

printf "www.baidu.com \a"

輸出結果為:

shell 文件包含

Shell 文件包含

和其他語言一樣,Shell 也可以包含外部腳本。這樣可以很方便的封裝一些公用的代碼作為一個獨立的文件。

Shell 文件包含的語法格式如下:

. filename # 注意點號(.)和文件名中間有一空格

source filename

創建兩個 shell 腳本文件。

url.sh 代碼如下:

#!/bin/bash

url="http://www.baidu.com"

url_read.sh 代碼如下:

#使用 . 號來引用url.sh 文件

#. ./url.sh

# 或者使用以下包含文件代碼

source ./url.sh

echo "官網地址:$url"

接下來,我們為 url_read.sh 添加可執行權限並執行:

註:被包含的文件 url.sh 不需要可執行權限。

這就是我分享的shell腳本,其中參考了很多人的文章,如果大家有什麼更好的思路,也歡迎分享交流哈。

相關焦點

  • shell腳本的使用該熟練起來了,你說呢?(篇一)
    中間邏輯如下所示:shell 腳本可以和許多外部命令行工具結合起來完成信息查詢、簡化文本處理、調度任務運行時間、生成報表以及發送郵件之類的工具。使用 Shell 的熟練程度反映了用戶對 Linux 的掌握程度,運維工程師、網絡管理員、程式設計師都應該學習 Shell。
  • shell腳本的使用該熟練起來了,你說呢?(篇二)
    n 代表一個數字,1 為執行腳本的第一個參數,2 為執行腳本的第二個參數,以此類推……實例以下實例我們向腳本傳遞三個參數,並分別輸出,其中 $0 為執行的文件名(包含文件路徑):echo "Shell 傳遞參數實例!"
  • 編寫Linux Shell腳本的最佳實踐
    前言 由於工作需要,最近重新開始拾掇shell腳本。雖然絕大部分命令自己平時也經常使用,但是在寫成腳本的時候總覺得寫的很難看。而且當我在看其他人寫的腳本的時候,總覺得難以閱讀。
  • 資料|《Linux 命令行與 shell 腳本編程大全》
    今日資料推薦《 Linux 命令行與 shell 腳本編程大全》這是一本關於 Linux 命令行與 shell 腳本編程的全方位教程,主要包括四大部分:Linux 命令行,shell 腳本編程基礎,高級 shell 腳本編程,如何創建實用的 shell 腳本。
  • Linux系統下Java通過shell腳本監控重啟服務
    思路 java程序獲取linux進程信息可以通過shell腳本獲取進程信息、通過讀取proc文件系統獲取進程信息。 但是為了系統的安全性、方便維護等角度出發,更多的是java通過shell獲取和linux交互能力。
  • Linux Shell通配符、元字符、轉義符最全使用攻略
    說到shell通配符(wildcard),大家在使用時候會經常用到。當shell在「參數」中遇到了通配符時,shell會將其當作路徑或文件名去在磁碟上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴展);否則就將該通配符作為一個普通字符傳遞給「命令」,然後再由命令進行處理。總之,通配符 實際上就是一種shell實現的路徑擴展功能。在 通配符被處理後, shell會先完成該命令的重組,然後再繼續處理重組後的命令,直至執行該命令。
  • 關於 Shell中常見參數及判斷命令
    Shell常用特殊變量經常會在shell命令中,看到$0, $#, $*, $@, $?, $$這樣的取值,這些代表什麼呢?變量含義$0當前腳本的文件名$n傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。
  • shell編程訪問文件夾及alias永久生效的辦法
    有一些命令已經練習的比較熟練了,但是要經過三四串命令才能達到一個什麼目的,所以我想著學習一下shell編程來解決這個問題,這樣當我用alias(命令別名)的方式來調用程序的話,會極大地提高效率。需求1,我要先解決alias的問題,因為我一旦重新開一個shell就需要重新source,還是比較麻煩的。
  • 寫出健壯的 Bash 腳本
    許多人用shell腳本完成一些簡單任務,而且變成了他們生命的一部分。不幸的是,shell腳本在運行異常時會受到非常大的影響。在寫腳本時將這類問題最小化是十分必要的。
  • 如何用Shell監控文件變化?
    文件監控可以配合rsync實現文件自動同步,例如監聽某個目錄,當文件變化時,使用rsync命令將變化的文件同步。(可用於代碼自動發布)實現文件自動同步,例如監聽某個目錄,當文件變化時,使用rsync命令將變化的文件同步。(可用於代碼自動發布)。inotify 是linux內核的一個特性,在內核 2.6.13 以上都可以使用。
  • 陰陽師某粉絲被爆公開使用腳本,外掛到底該不該封?
    最近,陰陽師中因為沒有啥實質性的活動,玩家們也是覺得非常無聊,不料就在最近幾天,有玩家爆料某知名主播的粉絲團裡面有人使用腳本,還公開嘲諷沒有用腳本的玩家,一時間吃瓜群眾無數。就腳本問題,簡單地和大家討論一下。
  • 寫出健壯的 Bash 腳本 - OSCHINA - 中文開源技術交流社區
    許多人用shell腳本完成一些簡單任務,而且變成了他們生命的一部分。不幸的是,shell腳本在運行異常時會受到非常大的影響。在寫腳本時將這類問題最小化是十分必要的。
  • 單引號、雙引號和三引號的使用
    1,如果字符串中含有雙引號,可以在賦值時在最外面使用單引號,這樣就可以正常運行,如下:s='what"s your name?'
  • 一次使用 Go 語言編寫腳本的經歷
    值得提醒的是,很多人都說「go run 只是一個玩具」,但是如果我們需要腳本,同時也喜歡 Go 語言,那麼這個玩具就是我們想要的。所以已經支持的很好了,對吧?我們可以編寫腳本,並通過 go run 命令來執行。還有什麼問題呢?問題是我很懶,希望通過類似./my-script.go 的方式來運行腳本,而不是 go run my-script.go。
  • 沒用過這幾招,別說你會使用Jupyter Notebook!
    作者:劉早起 來源:早起Python如果你想用python進行數據分析,那麼Jupyter notebook是你必須要熟練掌握的工具之一,而Notebook也有很多省時好用的小技巧,本文將分享我在使用Notebook時習慣使用的一些操作!
  • 實力解剖一枚挖礦腳本,風騷操作亮瞎雙眼 - 51CTO.COM
    /bin/sh 腳本的第一行,看起來是一行注釋,但其實並不是。它規定了接下來的腳本,將要採用哪一個SHELL執行。像我們平常用的bash、zsh等,屬於sh的超集,這個腳本使用sh作為執行的shell,具有更好的可移植性。
  • 取代bash,macOS Catalina 使用 zsh 作為默認 Shell
    不過對於開發者和高級用戶來說,macOS Catalina 還有一個重大的變化 —— zsh 已取代 bash 成為新版作業系統中的默認 shell 。▲ bash on macOS Mojave默認情況下,在 macOS Catalina 中所有新創建的用戶帳號都將使用 zsh。
  • 10分鐘搞定讓你困惑的 Jenkins 環境變量
    /jenkins_home jenkins/jenkins2021 年了,本地沒有 Docker 說不過去了,過來瞧瞧 Docker 系列是否入得了你的法眼?認識 Jenkins 環境變量Jenkins 環境變量就是通過 env 關鍵字暴露出來的全局變量,可以在 Jenkins 文件的任何位置使用其實和你使用的程式語言中的全局變量沒有實質差別查看 Jenkins 系統內置環境變量Jenkins 在系統內置了很多環境變量方便我們快速使用,查看起來有兩種方式:方式一:
  • 用了這麼多年Linux,你清楚控制臺、終端與shell及它們的關係嗎?
    我們在使用Linux的時候會經常遇到終端和shell的概念。比如在桌面版的Ubuntu上面,我們可以在桌面上右擊滑鼠,點擊「Open Terminal」來打開一個終端。此時,我們就可以在該終端中輸入Linux命令了。有人可能會問,這不是shell嗎?那麼終端和shell到底是什麼關係呢?1什麼是終端對於什麼是終端,我們先看一個定義。
  • 短視頻腳本怎樣寫?視頻腳本創作的6大要素講解
    什麼是視頻腳本?短視頻雖然只有60s,但是優秀的短視頻裡,每一個鏡頭都是精心設計過的。就像導演要拍一部電影,每一個鏡頭都是有設計的。對於鏡頭的設計,利用的就是鏡頭腳本。腳本製作方法,在拍攝腳本裡面,我們要對每一個鏡頭進行細緻的設計,我們今天主要從鏡頭、景別、內容、臺詞、時長、運鏡、道具,6個要素進行講解。