衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

shell腳本本身自帶的命令詳解

FPGA學(xué)姐 ? 來源:FPGA學(xué)姐 ? 2023-05-23 09:32 ? 次閱讀

除了以文件形式保存在/usr/bin下面的命令,shell腳本中還可以使用shell本身自帶的命令,即內(nèi)置命令

1、:命令

它不做任何處理,并且永遠(yuǎn)將0作為退出狀態(tài)碼,也被稱為空命令(null command),由于空命令返回的退出狀態(tài)碼永遠(yuǎn)為0,所以它也可以像下面這樣用于編寫無限循環(huán)的控制結(jié)構(gòu)。因此true命令和:命令除了名稱不一樣,其余都是一樣的。

while :     ←-----(本行及以下3行)使用了空命令的無限循環(huán)
do            
    處理內(nèi)容  
done

2、echo/printf

echo命令比較簡單不做過多介紹

▼echo命令的選項有-n、-e和-E。-n選項用于設(shè)置不讓腳本輸出行尾的換行符。其實準(zhǔn)確來說,echo命令會在參數(shù)后面加上一個換行符并將其輸出到標(biāo)準(zhǔn)輸出中。但是,如果使用了-n選項,echo命令就不會在行尾添加換行符了。

▼printf命令和echo命令不同,不會在輸出的行尾添加換行符。如果想輸出換行符,需要在格式字符串中顯式地添加 。另外,echo命令的-e選項中支持的轉(zhuǎn)義字符也可以在printf中使用。唯一的例外是在輸出8進(jìn)制的ASCII碼字符時,echo命令使用的是?nnn,而printf不需要前面的0,寫成 nn就可以了。

3、command命令和builtin命令

函數(shù)的優(yōu)先級高于可執(zhí)行文,在這種情況下,要想執(zhí)行優(yōu)先級較低的內(nèi)置命令或者可執(zhí)行文件,可以使用內(nèi)置命令command。command命令的使用方法為“command命令名”,使用它就可以只在內(nèi)置命令和可執(zhí)行文件中查找并執(zhí)行指定的命令。

038bfe58-f8f5-11ed-90ce-dac502259ad0.png

這種情況下,就可以使用command命令或者builtin命令設(shè)置執(zhí)行命令的優(yōu)先順序。

4、type命令

type命令用于判斷指定的命令的類型。該命令可以輸出參數(shù)中命令的類型,即別名、保留字、函數(shù)、內(nèi)置命令、可執(zhí)行文件中的任意一個

▼使用type命令顯示別名的詳細(xì)信息

$ alias ll='ls -l'
$ type ll
ll 是 `ls -l' 的別名

▼使用type命令顯示函數(shù)的詳細(xì)信息

$ hello() { echo 'Hello, world!'; }  ←----- 定義 hello 函數(shù)
$ type hello
hello 是函數(shù)
hello ()
{                        ←----- 函數(shù)體的代碼
    echo 'Hello, world!'
}

▼將不存在的命令作為參數(shù)會報錯

$ type xxx
-bash: type: xxx: 未找到

這時,type命令的退出狀態(tài)碼為1。反過來,如果命令存在于那幾種類型之中,那么退出狀態(tài)碼為0

5、set命令

▼第1個功能是顯示當(dāng)前shell中的所有變量。如果在執(zhí)行set命令時沒有指定任何參數(shù),那么該命令就會輸出當(dāng)前shell中設(shè)置的變量及其值的列表,以及函數(shù)名和函數(shù)體的列表。

$ set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
……以下省略……

▼也可以用來顯示函數(shù)信息像type

▼使用set -o命令顯示所有選項的狀態(tài)

$ set -o
allexport        off
braceexpand      on
emacs            on
errexit          off
……以下省略……

▼使用set命令覆蓋位置參數(shù)的值

#!/bin/bash
echo "$1, $2, $3, $4"
set 111 222 333
echo "$1, $2, $3, $4"
運(yùn)行:
$ ./set_parameter.sh aaa bbb ccc ddd
aaa, bbb, ccc, ddd
111, 222, 333,    ←----- set 命令修改了位置參數(shù)的內(nèi)容

6、unset

unset命令用于刪除shell中的變量。使用方法為“unset變量名,刪以后為空字符串

$ name=miyake
$ echo "name = $name"
name = miyake
$ unset name
$ echo "name = $name"
name =

標(biāo)記為readonly的變量想刪也刪不掉

7、input

read命令用于從標(biāo)準(zhǔn)輸入讀取一行數(shù)據(jù),其使用方法如下。

#!/bin/bash
echo 'delete file?'
read input  ←--------- 從標(biāo)準(zhǔn)輸入讀取 1 行數(shù)據(jù)并賦值給變量 input
if [[ $input == yes ]]; then
    echo 'DELETE'
else
    echo 'CANCEL'
fi

▼根據(jù)鍵盤的輸入執(zhí)行不同的處理

$ ./read_input.sh
delete file?
yes  ←----- 用戶的輸入
DELETE

▼將標(biāo)準(zhǔn)輸入的內(nèi)容逐行輸出到標(biāo)準(zhǔn)輸出

#!/bin/bash
while read line  ←----------- 標(biāo)準(zhǔn)輸入的 1 行內(nèi)容被不斷地賦值給變量 line
do
  printf '%s
' "$line"
done

注意事項:read命令會將解析為轉(zhuǎn)義字符。因此后面即使是IFS所包含的字符,也不能實現(xiàn)單詞分割的功能。特別是,如果在行尾,那么換行符也會被忽略,這一行和下一行會被當(dāng)成一行讀取。要想禁止這一功能,可以使用-r選項。該選項可以讓符號不再具有特殊的含義,即使出現(xiàn)在行尾,這一行也會和下一行保持獨(dú)立,不會連到一起。

8、wait命令

wait命令用于等待在后臺運(yùn)行的進(jìn)程的結(jié)束。在以后臺的方式運(yùn)行比較耗時的處理時,如果想等待所有處理結(jié)束,就可以使用wait命令

#!/bin/bash
./task1.sh &
./task2.sh &
wait
echo finish

9、eval

eval命令可以將參數(shù)指定的字符串當(dāng)作shell的命令行解析并執(zhí)行

例如eval ls~

ls ~命令會被執(zhí)行。這和直接在腳本中寫入ls ~是一樣的

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ASCII
    +關(guān)注

    關(guān)注

    5

    文章

    172

    瀏覽量

    35200
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4346

    瀏覽量

    62971
  • Shell腳本
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    8023

原文標(biāo)題:shell腳本基礎(chǔ)(六)內(nèi)置命令

文章出處:【微信號:FPGA學(xué)姐,微信公眾號:FPGA學(xué)姐】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    shell腳本進(jìn)階】幾個常用的shell進(jìn)階腳本

    shell腳本進(jìn)階】幾個常用的shell進(jìn)階腳本
    的頭像 發(fā)表于 09-19 08:59 ?1965次閱讀
    【<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>進(jìn)階】幾個常用的<b class='flag-5'>shell</b>進(jìn)階<b class='flag-5'>腳本</b>

    Linux Shell腳本入門到實戰(zhàn)詳解

    Linux Shell腳本入門到實戰(zhàn)詳解
    發(fā)表于 02-17 15:03 ?660次閱讀

    如何編寫Shell腳本命令

    編寫Shell腳本命令
    發(fā)表于 06-18 14:00

    腳本shell語言的相關(guān)資料推薦

    啟動、掛起、停止甚至是編寫一些程序。shell也是一種腳本編程語言,所謂的腳本編程就是能進(jìn)行批處理。批處理能提高布局速度,或者在做一些復(fù)雜任務(wù)是能解決很多效益問題,Shell
    發(fā)表于 12-23 06:24

    shell腳本最簡明的教程

    Shell腳本,就是利用Shell命令解釋的功能,對一個純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell
    的頭像 發(fā)表于 10-16 11:27 ?4887次閱讀
    <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>最簡明的教程

    如何創(chuàng)建和執(zhí)行一個簡單的Linux shell腳本

     如果您愿意要嘗試更長的shell腳本,請將下面的shell腳本(并附加為PDF和ODT文件)復(fù)制到文本編輯器中,保存,使其可執(zhí)行并運(yùn)行。當(dāng)您了解更多Linux
    的頭像 發(fā)表于 11-06 17:28 ?1.3w次閱讀

    Linux系統(tǒng)命令shell腳本實踐指南

    Linux系統(tǒng)命令shell腳本實踐指南資料下載。
    發(fā)表于 06-01 14:47 ?28次下載

    109個實用shell腳本分享

    Shell腳本,就是利用Shell命令解釋的功能,對一個純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell
    的頭像 發(fā)表于 03-16 08:58 ?2685次閱讀

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發(fā)表于 01-11 16:50 ?4次下載

    shell腳本基礎(chǔ)知識

    shell腳本是一個文件,里面存放的是特定格式的指令,系統(tǒng)可以使用腳本解析器翻譯或解析指令并執(zhí)行(無需編譯),shell腳本的本質(zhì)是
    的頭像 發(fā)表于 04-17 15:00 ?1132次閱讀

    Linux shell 腳本詳解

    Shell 通過提示您輸入,向操作系統(tǒng)解釋該輸入,然后處理來自操作系統(tǒng)的任何結(jié)果輸出,簡單來說Shell就是一個用戶跟操作系統(tǒng)之間的一個命令解釋器。
    發(fā)表于 05-22 10:03 ?343次閱讀
    Linux <b class='flag-5'>shell</b> <b class='flag-5'>腳本</b><b class='flag-5'>詳解</b>

    為什么shell腳本中執(zhí)行命令要加exec?這個exec有什么作用呢?

    正常情況下,如果我們想要在shell腳本中執(zhí)行一個命令,我們只用將該命令原樣寫到這個shell腳本
    的頭像 發(fā)表于 08-21 09:10 ?3348次閱讀
    為什么<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>中執(zhí)行<b class='flag-5'>命令</b>要加exec?這個exec有什么作用呢?

    shell腳本基本命令

    Shell腳本是一種可執(zhí)行文件,它包含了一組用某種特定語言編寫的命令,這些命令可以被解釋器(如bash)執(zhí)行。以下是一些常見的shell
    的頭像 發(fā)表于 11-08 10:08 ?2223次閱讀

    shell并行調(diào)用腳本

    Shell腳本中,可以使用一些技巧來實現(xiàn)并行調(diào)用。以下是幾種常見的方法: 使用后臺進(jìn)程:在Shell腳本中,可以使用"command2 上述腳本
    的頭像 發(fā)表于 11-08 10:23 ?1001次閱讀

    linux命令行與shell編程實戰(zhàn)

    Linux命令行與Shell編程實戰(zhàn)主要涉及以下內(nèi)容: Linux命令行基礎(chǔ):學(xué)習(xí)Linux命令行的基本操作,如文件管理、進(jìn)程管理、網(wǎng)絡(luò)配置等。熟悉使用
    的頭像 發(fā)表于 11-08 10:57 ?838次閱讀
    广州百家乐官网牌具公司| 百家乐园太阳| 百家乐官网评级导航| 百家乐有看牌器吗| 球讯网| 百家乐优博娱乐城| 百家乐官网投资心得| 新世纪百家乐官网娱乐城| 大发888开户注册| 百家乐官网制胜法| 本溪棋牌娱乐网| 属蛇和属猪做生意| bet365地址| 赌博百家乐官网赢钱方法| 威尼斯人娱乐城赌场| 百家乐官网大小牌路的含义| 大发888体育投注| 项城市| 百家乐发脾机| 易球百家乐官网娱乐城| 百家乐科学打| 马德里百家乐官网的玩法技巧和规则| 走地| 香港百家乐马书| 真钱百家乐官网大转轮| 博彩现金开户| 百家乐翻天粤| 信誉百家乐官网博彩网| 大发888注册开户| 百家乐优惠高的网址| 百家乐官网真人百家乐官网皇冠开户| 大发888国际娱乐net| 博狗百家乐现场| 开平市| 威尼斯人娱乐网注册网址| 百家乐代打公司| 百家乐官网桌14人| 大发888合营商| 百家乐折叠桌| 百家乐官网老是输| 白沙|