Ksh
Kornshell 語法中的#@(#) 是什麼
我正在查看 AIX 框上的一個腳本,其中有幾行以
#@(#)
這說明什麼?顯然,Google搜尋對於符號是完全沒有結果的。
以下是腳本中的行:
#!/usr/bin/ksh # #@(#) #@(#) USAGE: dump_master_db [opts] SERVER [AREA] #@(#) opts: -p PAGENAME : send Pages to PAGENAME rather than the default (usually database) #@(#) -nodbcc : will not do the DBCCs before the dump #@(#) -c COMPRESSION_LEVEL : dump the database at the stated compression level. #@(#) #@(#) This script will do some DBCCs, truncates the log and then dumps the master database on any SERVER #@(#) The SERVER parm is used to build the logical device name as follows: #@(#) SERVER_master_dump #@(#) NOTE: There is no AREA and no stripes for this dump device. #@(#) COMPRESSION: VALUES 1 (least) to 9 (most compressed). #@(#) Currently, we only use values of none to 1.
奇怪的字元串“@(#)”其實是古代SCCS版本控制系統使用的。具體來說,該
what
命令將查看文件(二進製或文本)並找到以“@(#)”開頭的以 ASCII-Nul 結尾的字元串,並將該字元串列印出來。這允許您在“.o”文件和最終的執行檔中嵌入可列印的 ASCII 版本號,這樣您就可以知道哪些文件的哪些版本最終在執行檔中。我認為RCS
ident
命令具有類似的功能。前導的 ‘#’ 確實使該行的其餘部分成為
ksh
註釋,所以我的猜測是某些項目編寫了所有ksh
腳本,以便 SCCSwhat
命令列印出腳本的所有用法等。