2013-04-09 70 views
1

我發現在kornshell腳本代碼行:Kornshell變量定義:什麼是?FOO?

foo=`basename ?BAR?` 

什麼是問號是什麼意思?

謝謝

+0

'basename'用於檢測腳本的完整路徑。 – fedorqui 2013-04-09 15:25:39

+0

謝謝。什麼是BAR?在做什麼? – vo1d 2013-04-09 16:05:41

回答

3
touch BAR ABAR ABARZ 
ls ?BAR? 
ABARZ 

?通常是一個殼通配符字符匹配1個字符,以及一個1個字符位置必須是在使用中,如示例中所示的上方。這就像'*'的1字符版本,匹配1個字符(必須在那裏)。請注意,如果您更改爲

ls ?BAR* 

你得到輸出如下

ABAR ABARZ 

你的代碼顯示了相同的行爲

foo=$(basename ?BAR?) 
echo $foo 
ABARZ 

這是否有意義?並不是真的,但考慮到你給出的另一種可能的解釋的小環境是原始腳本編寫者使用?BAR?作爲佔位符,並告訴你「將其改變爲真實/有意義的值」。

其他可能有其他想法。

IHTH

+0

這不是佔位符,因爲它在運行高效的腳本。 – vo1d 2013-04-09 16:41:44

+0

好吧,就像我剛纔所說的那樣,只是按照描述的方式處理文件名對我來說沒有意義,但也許你有更多的上下文,並且可以看到這個腳本的工作方式,這是有道理的。也許這只是一個臨時文件,版本字母正面和背面? – shellter 2013-04-09 17:06:06

+0

謝謝。更有用的上下文在這個腳本中是不可見的,它只是處理文件,其文件名我不知道。但我認爲這正是它所做的。處理文件,如0BAR1 0BAR2 ...謝謝 – vo1d 2013-04-10 07:59:37