色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【RT-Thread學習筆記】bash和dash-shell

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-07-30 13:49 ? 次閱讀

? 最近在工作中遇到一個很奇葩的問題,就是一個嵌入式SDK編譯,它里面執行shell命令的時候,使用的dash shell來解析,而通常我們默認用的是bash shell來解析;我按照bash shell那樣照常編寫腳本,大部分的腳本是沒有問題的,但是偏偏就被我遇到了不一樣的地方,以此文記錄下。

先說下bash shell與bash shell的關系。

什么是bash ?

Bash(GNU Bourne-Again Shell)是許多Linux平臺的內定Shell,事實上,還有許多傳統UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。

GNU/Linux 操作系統中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符號鏈接,但鑒于 bash 過于復雜,有人把 bash 從 NetBSD 移植到 Linux 并更名為 dash (Debian Almquist Shell),并建議將 /bin/sh 指向它,以獲得更快的腳本執行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX標準。

Debian和Ubuntu中,/bin/sh默認已經指向dash,這是一個不同于bash的shell,它主要是為了執行腳本而出現,而不是交互,它速度更快,但功能相比bash要少很多,語法嚴格遵守POSIX標準。

簡單來說,就是dash是bash的簡化版本,沒有支持那么復雜的東西。

再看下我遇到的問題,為了好做對比,我分別寫了1個腳本,分別用bash和dash去解析運行,得出不同的答案。

腳本內容如下:


result=1234

if [[ "$result" == "1234" ]]; then
        echo "yes"
else
        echo "no"
fi
if [ "$result" == "1234" ]; then
        echo "yes"
else
        echo "no"
fi
if [[ "$result" = "1234" ]]; then
        echo "yes"
else
        echo "no"
fi
if [ "$result" = "1234" ]; then
        echo "yes"
else
        echo "no"
fi
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

OK,腳本對應的行號如下所示:

使用/bin/bash運行,一切正常,輸出4個yes

使用/bin/dash運行,只有一個輸出正常,3處報錯!!!

為何???

原來,dash是很奇葩的:

  • if 里面的條件語句只能使用 [ ] 不能使用 [[ ]];
  • 字符串判斷,只能使用 = 不能使用 ==;

word天吶!!就是這么回事。

我們還可以使用 ls -al /bin/sh查看下系統默認的shell解析器是什么,如下:

至于 [ ] 與 [[ ]] 的區別,可以參考這篇文章:Linux Shell 中的 ()、(())、[]、[[]]、{} 怎么用是不是還傻傻分不清?

==可用于判斷變量是否相等,=除了可用于判斷變量是否相等外,還可以表示賦值。

=與==在[]中表示判斷(字符串比較)時是等價的。

今天的總結就介紹到這,有什么問題,歡迎你在評論區告訴我。

審核編輯:湯梓紅

?

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5082

    文章

    19104

    瀏覽量

    304815
  • Shell
    +關注

    關注

    1

    文章

    365

    瀏覽量

    23356
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10179
  • RT-Thread
    +關注

    關注

    31

    文章

    1285

    瀏覽量

    40085
收藏 人收藏

    評論

    相關推薦

    RT-Thread學習筆記】使用scons命令生成靜態庫

    RT-Thread學習筆記】如何使用scons 命令中buildlib的生成靜態庫?
    的頭像 發表于 07-27 09:13 ?5961次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】使用scons命令生成靜態庫

    RT-Thread學習筆記bash shell -e參數

    bash shell -e參數的含義與用途,你了解嗎?
    的頭像 發表于 07-28 05:20 ?1833次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】<b class='flag-5'>bash</b> <b class='flag-5'>shell</b> -e參數

    RT-Thread學習筆記和finsh shell配置方法

    配置。圖解詳細步驟:RT-Thread學習筆記--finsh shell配置方法 RT-Thread學習
    發表于 02-12 00:01

    RT-Thread Nano入門學習筆記

    RT-Thread Nano入門學習筆記
    發表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> Nano入門<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    RT-Thread 應用筆記 - RTC Alarm 組件的使用

    RT-Thread 應用筆記 - 不正確使用LOG也會引發hard faultRT-Thread 應用筆記 - RTC Alarm 組件的使用RT-
    發表于 01-25 18:18 ?10次下載
    <b class='flag-5'>RT-Thread</b> 應用<b class='flag-5'>筆記</b> - RTC Alarm 組件的使用

    RT-Thread 內核學習筆記 - 理解defunct僵尸線程

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線程

    RT-Thread 內核學習筆記 - 設備模型rt_device的理解

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 設備模型<b class='flag-5'>rt</b>_device的理解

    RT-Thread 內核學習筆記 - 內核對象鏈表結構深入理解

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:23 ?6次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象鏈表結構深入理解

    RT-Thread 內核學習筆記 - 內核對象初始化鏈表組織方式

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:24 ?3次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象初始化鏈表組織方式

    RT-Thread 內核學習筆記 - 內核對象操作API

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象操作API

    RT-Thread學習筆記 RT-Thread的架構概述

    RT-Thread 簡介 作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發表于 07-09 11:27 ?4546次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread學習筆記】Makefile的FORCE

    RT-Thread學習筆記】十分鐘學會Makefile的FORCE
    的頭像 發表于 07-30 13:55 ?2547次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】Makefile的FORCE

    RT-Thread學習筆記】如何抓取終端的網絡報文

    RT-Thread學習筆記】如何抓取終端的網絡報文?
    的頭像 發表于 07-30 13:57 ?2810次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】如何抓取終端的網絡報文

    RT-Thread學習筆記】用memwatch排除內存泄露

    RT-Thread學習筆記】使用memwatch排除內存泄露
    的頭像 發表于 07-30 14:01 ?2326次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】用memwatch排除內存泄露

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?3932次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學習</b>
    主站蜘蛛池模板: chinese东北老年tv视频| 国产精品久久精品| 久久伦理影院| 亚洲野狼综合网站| 精品国产在天天线在线麻豆| 在线视频av大全色久久| 欧美影院在线观看完整版 mp4| 成人天堂资源WWW在线| 校草让我脱了内裤给全班看| 久久精品视频uu| 成人性生交大片免费看中文 | 做你的爱人BD日本| 日韩精品久久久久影院| 好大的太粗好深BL| metart中国撒尿人体欣赏| 亚洲高清在线视频| 免费人成视频X8X8国产更快乐| 高挑人妻无奈张开腿| 一起洗澡的老师免费播放| 日本高清免费在线| 狠狠色综合7777久夜色撩人| 99久久精品免费精品国产| 小鸟酱喷水| 欧美丰满熟妇无码XOXOXO| 国偷自产视频一区二区99| a在线视频免费观看| 亚洲视频在线观看地址| 任你躁国语自产二区在线播放| 极品少妇伦理一区二区| 成人区精品一区二区不卡AV免费| 夜夜精品视频一区二区| 色综合伊人色综合网站| 蜜桃成熟时2在线观看完整版hd| 国产精选视频在线观看| xxnxx动漫| 永久免费在线看mv| 香蕉免费高清完整| 日本69xxxx| 伦理片免费秋霞e| 果冻传媒独家原创在线观看| 高清日本片免费观看|