shell學習:print、echo、test命令
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 "Hello, Shell"Hello,Shell $ printf "Hello, Shell\n"Hello,Shell $
接下來,我來用一個指令碼來體現printf的強大功能:
#!/bin/bash# author:菜鳥教程# url:www.runoob.com 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
執行指令碼,輸出結果如下所示:
姓名性別體重kg 郭靖男66.12楊過男48.65郭芙女47.99
%s %c %d %f都是格式替代符
%-10s 指一個寬度為10個字元(-表示左對齊,沒有則表示右對齊),任何字元都會被顯示在10個字元寬的字元內,如果不足則自動以空格填充,超過也會將內容全部顯示出來。
%-4.2f 指格式化為小數,其中.2指保留2位小數。
Shell test 命令
Shell中的 test 命令用於檢查某個條件是否成立,它可以進行數值、字元和檔案三個方面的測試。
數值測試
引數 | 說明 |
---|---|
-eq | 等於則為真 |
-ne | 不等於則為真 |
-gt | 大於則為真 |
-ge | 大於等於則為真 |
-lt | 小於則為真 |
-le | 小於等於則為真 |
例項演示:
num1=100 num2=100if test $[num1]-eq $[num2]then echo '兩個數相等!'else echo '兩個數不相等!'fi
輸出結果:
兩個數相等!
程式碼中的 [] 執行基本的算數運算,如:
#!/bin/bash a=5 b=6 result=$[a+b]# 注意等號兩邊不能有空格 echo "result 為: $result"
結果為:
result 為:11
字串測試
引數 | 說明 |
---|---|
= | 等於則為真 |
!= | 不相等則為真 |
-z 字串 | 字串的長度為零則為真 |
-n 字串 | 字串的長度不為零則為真 |
例項演示:
num1="ru1noob" num2="runoob"if test $num1 = $num2 then echo '兩個字串相等!'else echo '兩個字串不相等!'fi
輸出結果:
兩個字串不相等!
檔案測試
引數 | 說明 |
---|---|
-e 檔名 | 如果檔案存在則為真 |
-r 檔名 | 如果檔案存在且可讀則為真 |
-w 檔名 | 如果檔案存在且可寫則為真 |
-x 檔名 | 如果檔案存在且可執行則為真 |
-s 檔名 | 如果檔案存在且至少有一個字元則為真 |
-d 檔名 | 如果檔案存在且為目錄則為真 |
-f 檔名 | 如果檔案存在且為普通檔案則為真 |
-c 檔名 | 如果檔案存在且為字元型特殊檔案則為真 |
-b 檔名 | 如果檔案存在且為塊特殊檔案則為真 |
例項演示:
cd /bin if test -e ./bash then echo '檔案已存在!'else echo '檔案不存在!'fi
輸出結果:
檔案已存在!
另外,Shell還提供了與( -a )、或( -o )、非( ! )三個邏輯操作符用於將測試條件連線起來,其優先順序為:"!"最高,"-a"次之,"-o"最低。例如:
cd /bin if test -e ./notFile -o -e ./bash then echo '至少有一個檔案存在!'else echo '兩個檔案都不存在'fi
輸出結果:
至少有一個檔案存在!
相關推薦
shell學習:print、echo、test命令
printf 命令上一章節我們學習了 Shell 的 echo 命令,本章節我們來學習 Shell 的另一個輸出命令 printf。printf 命令模仿 C 程式庫(library)裡的 printf() 程式。printf 由 POSIX 標準所定義,因此使用 print
shell學習:Linux系統日誌的相關命令、檔案和管理工具
日誌檔案是Linux系統維必不可少的部分,日誌檔案會隨著時間的推移變的越來越大,需要使用一種被稱為輪替的技術來限制日誌的體積,一旦超過了限制的大小,就對它的內容進行抽取,同時將日誌檔案中的舊條目儲存到歸檔檔案中,以便日後的查閱。 logrotate命令 logrotat
shell學習:顯示、讀取或拼接檔案內容:cat命令用法
cat命令用於將多個檔案連線,並將結果通過標準輸出(stdout)輸出來。 常用選項 -n, --number 從1開始對所有輸出的所有行編號-s, --squeeze-blank 替換兩行以上空白行為一行-b, --number-nonblank 對空白行不編號-
【iOS開發-51】案例學習:動畫新寫法、刪除子視圖、視圖順序、延遲方法、button多功能使用方法及icon圖標和啟動頁設置
無法查看 font targe 技術 value lstat tostring sta dict 案例效果: (1)導入所需的素材,然後用storyboard把上半截位置和大小相對固定的東西布局起來。當然,這些控件也要定義成對應地IBOutlet和IBActio
PHP-向瀏覽器輸出數據(print、echo、printf、sprintf等)
AR blog 多個 不能 信息 format 參數 vsp void 1、print (語言結構) pirnt - 輸出字符串 int print ( string $arg ) 舉例: 輸出:Hello World! print("Hello World!"); 等
Python從菜鳥到高手(8):print函數、賦值與代碼塊
images rec 控制臺輸出 error enter sam 運算 賦值 編程語言 1.神奇的print函數 ??print函數相信讀者一定對它不陌生,因為在前面的章節,幾乎每個例子都使用了print函數,這個函數的功能就是在控制臺輸出文本。不過print在輸出文本時還
c/c++再學習:C++中public、protect、private的訪問權限控制
namespace 大小 protect pub UNC 派生類 ret int 不變 C++中public、protect、private的訪問權限控制 訪問權限 一個類的public成員變量、成員函數,可以通過類的成員函數、類的實例變量進行訪問 一個類的protecte
【QT】QT的學習:char×跟QString、string之間的轉換
(1)QString轉成char*或者char陣列。 QString data; QByteArray tempData = data.toLocal8Bit(); char *value = (ch
Linux命令學習:建立刪除檔案、資料夾的命令
今天學習了幾個命令,是建立、刪除檔案和資料夾的,在linux裡,資料夾是目錄,下面說下我學習的命令。 建立資料夾【mkdir】 一、mkdir命令使用許可權 所有使用者都可以在終端使用 mkdir
深入C#學習:序列化(Serialize)、…
序列化又稱序列化,是.NET執行時環境用來支援使用者定義型別的流化的機制。其目的是以某種儲存形成使自定義物件持久化,或者將這種物件從一個地方傳輸到另一個地方。 .NET框架提供了兩種序
React學習:元件生命週期、元件間資料傳遞
注:本篇文章僅供個人日後複習,所以沒什麼乾貨,只起類似“備忘錄”的作用。最近,在看《深入淺出React和Redux》,目前到第二章了,這是本章程式碼:(1)counter.jsimport React, { Component } from 'react'; import P
資料結構—堆的學習:堆化陣列、堆的插入、堆的刪除
原網頁:http://blog.csdn.net/morewindows/article/details/6709644 程式如下: //資料結構堆的建立(堆化陣列)、堆的插入和刪除 #include<stdio.h> #include <stdlib.h
date、man、hwclock、echo、printf
date、man、hwclock、echo、printfdate: ntp:network time protocol 網絡時間協議 硬件時鐘 系統時鐘獲得命令使用幫助help 查看一個內部命令使用幫助,查看一個內部命令幫助一般使用該命令 help COMMOND 2.m
Shell入門(三)echo.printf.test命令
Shell echo命令 Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用於字串的輸出。命令格式: echo string 您可以使用echo實現更復雜的輸出格式控制。 1.顯示普通字串: echo "It is a test" 這裡的雙引號完全
Jenkins高階篇之Pipeline方法篇-Pipeline Basic Steps-1-方法deleteDir和dir、echo、error
這篇開始來學習一個最基礎的pipeline元件,這個也是一個獨立的外掛,在安裝pipeline的時候預設會自動安裝,外掛的名稱是pipeline basic steps, 你可以去你自己jenkins環境,外掛管理下的installed下面找到這個外掛。這篇我們先來學習下兩個關於資料夾路徑操作的
Linux命令學習:Linux中more和less命令以及查詢用法
** 一、more命令 ** more功能類似 cat ,cat命令是整個檔案的內容從上到下顯示在螢幕上。 more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能 。mo
php: 輸出echo、print、print_r、printf、sprintf、var_dump、die的區別比較
一、echoecho() 實際上不是一個函式,是php語句,因此您無需對其使用括號。不過,如果您希望向 echo() 傳遞一個以上的引數,那麼使用括號會發生解析錯誤。而且echo是返回void的,並不返回值,所以不能使用它來賦值。例子: 複製程式碼程式碼如下: <
【轉】PHP:echo、print、print_r、sprintf、var_dump之間的區別
- echo是命令,不能返回值。echo後面可以跟很多個引數,之間用分號隔開,如: echo $myvar1; echo 1,2,$myvar,"<b>bold</b>"; - print是函式,可以返回一個值,只能有一個引數。 - print
shell學習--[、test測試的使用
一、在shell中,測試會設定返回的狀態,test是一個內建命令,test會根據expr表示式的求值結果返回真或者假,同時也可以使用方括號[],test expr和[ expr ]是等價的,可以使用$?來檢查返回值。 -o 操作符允許測試利用 set -o 選
shell學習筆記(一):for迴圈、if語句、萬用字元、命令代換、引號
一、for迴圈for 變數in列表docommand1command2......done例1:vim test.sh#! /bin/bashfor str in name.listdoecho $strdone例2:vim tesh.sh#! /bin/bash for((