1. 程式人生 > >shell學習:print、echo、test命令

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學習printechotest命令

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-向瀏覽器輸出數據(printechoprintfsprintf等)

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++中publicprotectprivate的訪問權限控制

namespace 大小 protect pub UNC 派生類 ret int 不變 C++中public、protect、private的訪問權限控制 訪問權限 一個類的public成員變量、成員函數,可以通過類的成員函數、類的實例變量進行訪問 一個類的protecte

【QT】QT的學習char×跟QStringstring之間的轉換

(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

datemanhwclockechoprintf

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和direchoerror

這篇開始來學習一個最基礎的pipeline元件,這個也是一個獨立的外掛,在安裝pipeline的時候預設會自動安裝,外掛的名稱是pipeline basic steps, 你可以去你自己jenkins環境,外掛管理下的installed下面找到這個外掛。這篇我們先來學習下兩個關於資料夾路徑操作的

Linux命令學習Linux中more和less命令以及查詢用法

** 一、more命令 ** more功能類似 cat ,cat命令是整個檔案的內容從上到下顯示在螢幕上。 more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能 。mo

php 輸出echoprintprint_rprintfsprintfvar_dumpdie的區別比較

一、echoecho() 實際上不是一個函式,是php語句,因此您無需對其使用括號。不過,如果您希望向 echo() 傳遞一個以上的引數,那麼使用括號會發生解析錯誤。而且echo是返回void的,並不返回值,所以不能使用它來賦值。例子: 複製程式碼程式碼如下: <

【轉】PHPechoprintprint_rsprintfvar_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((