tech-sjh

2008年3月24日 星期一

shell script: eval

今天逛到瘋狂帽客的 shell script 執行結果變指


#!/bin/bash
## A=100
## ls -l
## free -m
eval "`grep "^## " $0 | sed 's/^## //'`"
echo "A=$A"

從執行結果來看,會顯示出 A=100
但是 A=100 原本是在 comment 符號 # 之後,
為什麼會執行?

原來是 grep "^##" 把 ## 開頭的程式取出,
接著用 sed 置換 ## 。

於是 eval 接著就會執行
A=100
ls -l
free -m

最後一列指令印出字元 A 等於變數 A 的值一
百。因此輸出:

A=100

shell script 也是要花腦筋的。

沒有留言:

張貼留言

版權宣告、免責聲明


姓名標示、非商業性、相同方式分享3.0台灣授權條款授權。
免責聲明: 本文所載資料僅供參考,並不構成投資建議,
讀者閱讀或使用該資料所導致結果需要自擔風險與責任,
作者概不承擔閱讀人行為之任何風險與責任。
除非有特別宣稱,作者言論並不代表所屬任何團體、公司、或其他人意見。