[Shell Script]引入另一個檔案

  • 400
  • 0

到底要使用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達到想要的效果。
無論用哪個比較好,
將檔案再利用是很重要的控管方式!
因為這麼做就只要修改那個檔案,
而不是每個需要內容的檔案啦!