在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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 中的 ()、(())、[]、[[]]、{} 怎么用是不是還傻傻分不清?

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

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

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

審核編輯:湯梓紅

?

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

    關注

    5126

    文章

    19441

    瀏覽量

    313290
  • Shell
    +關注

    關注

    1

    文章

    371

    瀏覽量

    23842
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10357
  • RT-Thread
    +關注

    關注

    31

    文章

    1350

    瀏覽量

    41387
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

    RT-Thread學習筆記】如何使用scons 命令中buildlib的生成靜態庫?
    的頭像 發表于 07-27 09:13 ?6657次閱讀
    【<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 ?2088次閱讀
    【<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 ?9次下載
    <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 ?4832次閱讀
    <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 ?2979次閱讀
    【<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 ?3216次閱讀
    【<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 ?2710次閱讀
    【<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 ?4819次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學習</b>
    主站蜘蛛池模板: 天天摸天天操免费播放小视频 | 国产精品一区二区三 | 国产黄色片在线观看 | 全黄色一级片 | 国产大乳孕妇喷奶水在线观看 | 欧美伦理影院 | 中文字幕色婷婷在线精品中 | 无人码一区二区三区视频 | 一区二区中文字幕 | 亚洲不卡免费视频 | 浮荡视频在线观看免费 | 国产片无遮挡在线看床戏 | 性做久久久久久 | 国产午夜精品一区二区三区 | 色www视频永久免费 色www视频永久免费软件 | 欧美xxxxx精品 | 欧美卡一卡二卡新区网站 | 免费 在线观看 视频 | 国产精品欧美一区二区三区不卡 | 成年黄网站免费大全毛片 | 91在线播放免费不卡无毒 | 四虎.com| 视频一本大道香蕉久在线播放 | 天堂资源在线官网bt | 特黄特色大片免费播放器9 特黄特色大片免费视频播放 | 国产毛片一区二区三区精品 | 男人的j桶女人的j视频 | 亚洲 欧美 自拍 卡通 综合 | 黄色www| 国产精品区在线12p 国产精品任我爽爆在线播放6080 | 色香欲亚洲天天综合网 | 久国产精品久久精品国产四虎 | 福利盒子手机看片 | 免费一级在线观看 | 精品国产一区二区三区成人 | 五月天婷婷免费视频观看 | 久久精品久噜噜噜久久 | 高清毛片一区二区三区 | 伊人男人天堂 | 黄色香蕉网站 | 三级完整在线观看高清视频 |