bash命令行中带通配符参数何时展开??
生活随笔
收集整理的這篇文章主要介紹了
bash命令行中带通配符参数何时展开??
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在bash中執行的命令,有些參數經常會帶個通配符的,但是你知道這個參數是何時展開的嗎?
先來看下簡單的bash小代碼:
[zcm@debug #88]$cat del.sh #!/bin/bashif [ $# -lt 2 ]; thenecho "Usage: $0 <separator> <files>"exit 1 fiecho $1 echo $2 echo $3?
再來看執行過程:
[zcm@debug #89]$./del.sh *.txt a.txt b.txt c.txt [zcm@debug #90]$./del.sh "*.txt" Usage: ./del.sh <separator> <files> [zcm@debug #91]$ls aad/ a.txt b.txt c.txt [zcm@debug #92]$./del.sh aad/*.txt aad/a.txt aad/b.txt aad/c.txt [zcm@debug #93]$./del.sh "aad/*.txt" Usage: ./del.sh <separator> <files> [zcm@debug #94]$?
看出區別了嗎:輸入參數中 *.txt 有一個帶了雙引號,一個沒帶,運行結果就不一樣了。
結論:帶雙引號的*.txt在命令行中是當作一個整體傳入的,但是不帶雙引號的*.txt在傳給bash解釋器之前就已經被替換為它的結果(即:a.txt b.txt c.txt)。
所以,帶雙引號的*.txt在運行時出錯,提示參數個數不足,而另一個卻因為輸入參數個數充足,而沒有提示出錯!
總結
以上是生活随笔為你收集整理的bash命令行中带通配符参数何时展开??的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python pdf 转jpg/png工
- 下一篇: Dinic算法----最大流常用算法之一