有點奇怪的bash script 參數問題 - Linux

David avatar
By David
at 2015-10-11T02:13

Table of Contents

寫一個很簡單的script命名為gg,如下:

#!
echo $1


$1 代表第1個參數,
存好檔,改執行權限後,打指令:

gg cok 那應該會得到什麼?答案為 cok
gg cp* 那應該會得到什麼?答案為 cp*
gg co* 那應該會得到什麼?答案為 co* -----不是 co* 耶!

這樣很怪嗎?是我系統問題?大家會這樣嗎?

那 gg co* 答案是什麼? 答案是 command

因為執行目錄下剛好有個名叫 command 檔,

如果把哪個 command 檔刪除,答案就變正常 co*

我覺得很怪,有人可解釋?

http://i65ynb.2fh.co/pics/strlin25.jpg
--
Tags: Linux

All Comments

Eden avatar
By Eden
at 2015-10-13T17:01
因為你的 shell 會試著去展開那個星號
Rae avatar
By Rae
at 2015-10-14T20:40
展開方式就是 wildcard 的語法去比對現在目錄下的檔案
Hardy avatar
By Hardy
at 2015-10-17T00:55
可是參數跟檔案是兩回事呀!
Joseph avatar
By Joseph
at 2015-10-17T05:50
因為你的指令是在 shell 底下執行的
Yuri avatar
By Yuri
at 2015-10-17T16:11
所以他就主動的幫你轉換了 ' -')
bash 在處理指令上就是這樣
Agnes avatar
By Agnes
at 2015-10-19T11:24
那下面例子用 telnet co\* 卻是有例外?
http://i65ynb.2fh.co/pics/strlin26.jpg
Connor avatar
By Connor
at 2015-10-22T22:50
因為你用 '\' 把星號 escape 掉了
Brianna avatar
By Brianna
at 2015-10-27T21:25
bash 會把 '\' 後接的特殊符號原封不動傳給指令
Agatha avatar
By Agatha
at 2015-10-31T00:42
但是 gg co\* 卻顯示 command 喔
Megan avatar
By Megan
at 2015-11-04T12:50
因為你的 script 也是用 bash 執行的
Frederica avatar
By Frederica
at 2015-11-07T03:39
所以 \* 被以 * 的型式送進 gg 之後
又因為 gg 本身是個 bash script 所以又被轉譯了一次
Poppy avatar
By Poppy
at 2015-11-08T20:53
對多數shell來說 只要遇到*幾乎就是檔名的wildcard
Leila avatar
By Leila
at 2015-11-12T23:07
會先展開再送給程式

Windows8 + Centos7.1==>開機選項不見win8

Yuri avatar
By Yuri
at 2015-10-11T02:12
各位高手大家好: 有個關於雙作業系統的問題向大家求救: 我有台NB原本安裝windows 8作業系統, 我一時興起,請堂弟把Linux centos7.1也灌進去了。 結果,重開機後沒有在開機選單中看到windows 8。atat 我和堂弟都是新手,因而問題卡住了。 現在急著要透過原本windows 8 ...

萌 快樂

Lauren avatar
By Lauren
at 2015-10-10T12:01
本日我國最萌,應懸掛國旗 祝大家萌快樂 ^.^ http://www.wolflord.com/Picture/monday.jpg -- ~~於是,銀河的歷史又被海賊抹黑了好幾百頁。 ...

如何刪除網路芳鄰紀錄

Jacob avatar
By Jacob
at 2015-10-09T20:17
正在做學校的系統 之前測試用的samba伺服器明明就關掉了 windows7卻還會顯示 我的電腦→網路就會看到(以關掉的samba 上網查了 用 net use的指令能刪除 確實清空了 連線紀錄 但是之前測試用的samba伺服器還會顯示在 網路芳齡那邊 後來直接拔網路 重開機 重新整理 都還會持續顯示 請 ...

Help,mint安裝到隨身碟64G,卻只能用4G,

Agnes avatar
By Agnes
at 2015-10-09T14:27
前天買了一個sandisk 64G 想說利用universal USB installer安裝 mint 17 的64bit iso檔到裏面, 然後用USB開機來跑linux mint, 可是就算是先用 diskgenius將整個64G format成FAT32 (因為之前聽說FAT32只能format 3 ...

請問架設VPS管理後臺推薦

Jake avatar
By Jake
at 2015-10-09T03:12
各位好 小弟我最近正在學習用Proxmox 目前為止還蠻順利的 到了VPS管理這邊 因為之前有看過朋友使用CPanel還蠻方便的 不過他要收費 想問有沒有免費的control panel推薦 我朋友有跟我說一個叫Kloxo的 我自己則是找到一款叫Zpanel 他好像可以Linux windows都可 ...