到底要使用cat還是使用.(小數點)呢?
其實分別方法很簡單,
是純文字檔還是夾雜Shell Script語法?
假如你單純是文字檔,
直接用cat就可以了。
這樣好像有說跟沒說一樣,
我們以檔案內容為下拉式選單為例。
假設文字檔叫做select.conf,
內容如下:
<select>
<option>test</option>
</select>
那麼在Shell Script語法的檔案裡面如果你是在body裡面則可以直接cat出來
cat << EOF
<body>
EOF
SELECT_CONF="select.conf"
if [ -f "$SELECT_CONF" ]; then
cat $SELECT_CONF
fi
cat << EOF
</body>
EOF
假如你的select.conf內容長這樣:
cat << EOF
<select>
EOF
TEST="2"
if [ "$TSET" == "2" ]; then
echo "<option>test</option>"
else
echo "<option>test2</option>"
cat << EOF
</select>
EOF
因為中間包含Shell Script,就要使用.
也就是這樣:
cat << EOF
<body>
EOF
SELECT_CONF="select.conf"
if [ -f "$SELECT_CONF" ]; then
. $SELECT_CONF
fi
cat << EOF
</body>
EOF
雖然差別只是cat或.
效果可是差很多喔!
原則上用.才是真正的引入(類似其他語言的include),
而cat只是把檔案內容output出去,
因此若有Shell Script語法時,
你使用cat,
他還是會把語法當作純文字顯示出來~
可是所謂的檔案重複利用,也不是真的每次都用.,
把cat也學起來的原因是因為:
有時候你的檔案操作是給其他人(也許不是專門寫程式的人),
而你需要他寫模組化文件。
等他寫好模組化文件後(比方menu bar的<ul><li></li></ul>格式),
你就可以用cat顯示出來。
畢竟模組化文件裡可能沒有Shell Script指令,
就可以用cat將內容直接顯示出來~
之後其他人員要操作時,直接修改那個模組化文件就好了~(好比增加menu bar欄位或修改menu名稱)
因此重點在於程式碼的重複利用,
真正的引入是用.,
但依需求可以用cat達到想要的效果。
無論用哪個比較好,
將檔案再利用是很重要的控管方式!
因為這麼做就只要修改那個檔案,
而不是每個需要內容的檔案啦!