bash命令列中帶萬用字元引數何時展開??

2021-06-02 06:46:48 字數 899 閱讀 3983

在bash中執行的命令,有些引數經常會帶個萬用字元的,但是你知道這個引數是何時展開的嗎?

先來看下簡單的bash小**:

[zcm@debug #88]$cat del.sh 

#!/bin/bash

if [ $# -lt 2 ]; then

echo "usage: $0 "

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 [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 [zcm@debug #94]$

看出區別了嗎:輸入引數中 *.txt 有乙個帶了雙引號,乙個沒帶,執行結果就不一樣了。

結論:帶雙引號的*.txt在命令列中是當作乙個整體傳入的,但是不帶雙引號的*.txt在傳給bash直譯器之前就已經被替換為它的結果(即:a.txt b.txt c.txt)。

所以,帶雙引號的*.txt在執行時出錯,提示引數個數不足,而另乙個卻因為輸入引數個數充足,而沒有提示出錯!

命令列下執行帶引數php

命令列下執行帶引數 php命令列下執行php 不走apache 等通訊流程 沒有http 協議,所有 get,post 傳引數不起作用 按普通應用程式傳引數的方法進行。1 test.php 測試檔案 檢視複製列印 print r ar echo n echo argc echo n 2,命令列下呼叫...

python 命令列帶引數執行方式

m 將標準庫中的模組作為指令碼去執行 在python2.x中啟動乙個cgi web 伺服器 python m cgihttpserver port 啟動乙個web服務,使用瀏覽器檢視pydoc文件 python m pydoc p8080區域網內檔案傳輸,在python2.x中,可以啟動乙個伺服器,...

命令列引數

c 程式設計師參考 main方法可以使用引數,在這種情況下它採用下列形式之一 static int main string args static void main string args main方法的引數是表示命令行引數的string陣列。通常通過測試length屬性來檢查引數是否存在,例如 ...