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 也是要花腦筋的。

沒有留言:

張貼留言

版權宣告、免責聲明


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