Linux shell script 的 關閉echo -e 在shell指令碼中輸出 “-e”
第一次寫 script指令碼 按照鳥哥的hello world 的程式寫了一下:
#!/bin/bash
# Program:
# This program shows "hello World!" in your screen.
#History:
# 2015/07/17 Song First release
PATH=${PATH}:~/Linux_learn/bin
export PATH
echo -e "hello world!\a\n"
exit 0
然後按照書上的
[email protected]:~/Linux_learn/bin$ sh hello-world.sh
發現輸出結果是
這是很奇怪的一件事,百度了一下,發現-e hello world!
用
bash hello-wrold.sh
可以。
原因:
GNU/Linux作業系統中的/bin/sh本是bash (Bourne-Again Shell) 的符號連結,但鑑於bash過於複雜,有人把bash從NetBSD移植到Linux並更名為dash (Debian Almquist Shell),並建議將/bin/sh指向它,以獲得更快的指令碼執行速度。Dash Shell 比Bash Shell小的多,符合POSIX標準。
Ubuntu繼承了Debian,所以從Ubuntu 6.10開始預設是Dash Shell。
應該說,/bin/sh與/bin/bash
上面可以這樣理解,使用man sh命令和man bash命令去觀察,可以發現sh本身就是dash,也就更好的說明整合Debian系統之後的更改。
原來因為shell其實有很多種,而且不同的shell 語法也不一定相同。
因為dash比bash更加小,速度快,所以現在高版本的Ubuntu預設都為dash。sh命令作為連結 連線到dash。
用命令ls -l /bin/sh 看看
但很多教程第一行都寫#!/bin/bash ,但預設是dash不是bash 所以就有以上錯誤 。
關於指令碼第一行的理解:
#!/bin/sh
#!/bin/bash
這個說明可以讓你在將這個指令碼檔案 +x 後 用 ./ 執行時,自動分配直譯器
相關推薦
Linux shell script 的 關閉echo -e 在shell指令碼中輸出 “-e”
第一次寫 script指令碼 按照鳥哥的hello world 的程式寫了一下: #!/bin/bash # Program: # This program shows "hello World!" in your screen. #History: # 2015/07/1
shell 指令碼中set -e選項作用範圍
編寫shell指令碼沒多久,對於其許多命令的具體用法還不太熟悉。最近剛好有需求,就嘗試用指令碼去實現。其中就有用到set -e選項。 在用這個命令之前,也查過其功能,描述比較簡單:就是當命令以非零狀態退出時,則退出shell。主要作用是,當指令
Linux 中 Shell 常用的變數及其在指令碼中的呼叫
Linux 中 Shell 常用的變數及其基本操作 首先了解一下什麼是變數 變數 簡單的說,變數就是讓某一個特定字串代表不固定的內容。舉個數學例子,那就是:“ y = ax + b”這東西,在等號左邊的 (y) 就是變數,在等號右邊的 (a
Unix/Linux 指令碼中 “set -e” 的作用
1 2 #!/bin/bash
Unix/Linux指令碼中"set -e"的作用
有些指令碼中會看到這樣的語句:#!/bin/bash set -e command 1 command 2 ... exit 0“set -e” 這句語句告訴bash如果任何語句的執行結果不是true則應該退出。這樣的好處是防止錯誤像滾雪球般變大導致一個致命的錯誤,而這些錯
解釋bash指令碼中set -e與set -o pipefail的作用
man set中的解釋: set [--abefhkmnptuvxBCEHPT] [-o option] [arg ...] set [+abefhkmnptuvxBCEHPT] [+o option] [arg ...]... ...
Linux管道的作用--管道命令在指令碼中的使用
在UNIX下的管理性檔案,大部分是不需要特殊的檔案專用工具即可編輯,列印和閱讀的簡易文字檔案。 這些檔案大部分放在標準目錄:/etc下。如: 常見的密碼檔案和組檔案:(passwd,group)
groovy指令碼中輸出除錯資訊到檔案
public class xxxxxxxx extends ScriptOper { public void preProc_xxxx (DataRecord record, List<ScriptMap> lstMap) { ScriptMap map = ScriptM
Linux shell指令碼中執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題
Linux shell指令碼中執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題 echo $ret 和 echo "$ret" 區別: 如果是echo $ret,輸出結果為一行,沒有換行符 如果是echo "$ret",輸出結果為多行,有換行符
Unix/Linux shell腳本中 “set -e” 的作用
-i col ret urn 執行 copyto shel free erro #!/bin/bash set -e command 1 command 2 ... exit 0------------------------------------------------
Linux(7)學習shell script
一.什麼是shell script shell script 是利用 shell 的功能所寫的一個『程式 (program)』,這個程式是使用純文字檔,將一些 shell 的語法與指令(含外部指令)寫在裡面, 搭配正規表示法、管線命令與資料流重導向等功能,以達到我們所想要的處理目的。簡單的說,
學習Linux shell指令碼中連線字串的方法
這篇文章主要介紹了Linux shell指令碼中連線字串的方法,如果想要在變數後面新增一個字元,可以用一下方法: 程式碼如下: $value1=home $value2=${value1}"=" echo $value2 把要新增的字串變數新增{},並且需要把$放到外面。 這樣輸出的結果
鳥哥的Linux私房菜讀書筆記--shell script的追蹤與debug
關於sh命令 [[email protected] ~]$ sh [-nvx] scripts.sh 選項與引數: &nbs
Linux下Oracle資料庫自動備份Shell指令碼
1.在伺服器建立備份目錄,並賦予許可權 mkdir -p /backup/P_DATA #新建shell指令碼存放路徑 mkdir -p /backup/P_DB_BACK #新建Oracle資料庫備份目錄 chown -R oracle:oinstall /backup/P
Linux/Unix shell 指令碼中呼叫SQL RMAN指令碼
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
linux shell 避免’sudo echo x >’ 時’Permission denied’
[[email protected] ~]$ sudo echo "nameserver 114.114.114.144" >> /etc/resolv.conf -bash: /etc/resolv.conf: Permission denied 分析:這是因為重定向符號
大資料技術學習筆記之linux基礎3-軟體管理與shell指令碼開發
一、Linux軟體管理 -》壓縮檔案管理 -》常見壓縮格式 -
設定 shell 指令碼中 echo 顯示內容帶顏色
shell指令碼中echo顯示內容帶顏色顯示,echo顯示帶顏色,需要使用引數 -e 格式如下: echo -e "\033[字背景顏色;文字顏色m字串\033[0m" 例如: echo -e "\033[41;36m something here
Linux通過cat EOF新建檔案並新增或追加內容方法並在shell指令碼中配置環境變數時使用
cat << EOF >實現新建檔案並新增內容 [email protected]:/opt# cat << EOF >abcd.txt > 1 > 2 > 3 > eof > EOF [email
Shell 指令碼(shell script)學習
test.sh #!/bin/bash echo "Hello World !" 執行方法 1、作為可執行程式 將上面的程式碼儲存為 test.sh,並 cd 到相應目錄: chmod + x 目錄 chmod +x ./test.sh #使指令碼具有