【Shell】環境變數


用 export。

【環境】

  • Ubuntu 9.10

【範例】(存成 test_env.sh )

#!/bin/bash
A='this is a'
export $A

【結果】

注意跑這個 shell 是用 ".",而不是 ".\"

$. test_env.sh 
$echo $A
this is a

【問題】

  1. set 和 export 有何不同?

【參考】

  1. export env variables
    http://www.unix.com/shell-programming-scripting/37462-export-env-variables.html

【Shell】變數的疊代


善用 eval。

【環境】

  • Ubuntu 9.10

【範例】(存成 var.sh )

#!/bin/bash
a='asus'
b='epc'
asusepc='ASUS/EPC'

echo $(eval echo \$$a$b)
【結果】
#/bin/bash
$var.sh
ASUS/EPC
【補充】 用Perl的話更精簡,用兩個錢字號(dollars),下面是範例。
perl -e '$a="b"; $b="this is b"; print "$$a\n";'
this is b

【Shell】getopts


許多人寫shell或其他程式喜歡用$0/$1/$2...來取得輸入變數,不過卻有可能造成擴充性與閱讀性的問題。建議使用 getops 來取代 $0/$1來減少擴充與閱讀性的困難。

【目的】

  1. getopts 的使用
  2. shift 的使用
  3. 如何在shell 裡面作算數運算
【程式碼】(存成 opt.sh )
#!/bin/bash
aflag=
bflag=
while getopts ab: name
do
    case $name in
    a)    aflag=1;;
    b)    bflag=1
          bval="$OPTARG";;
    *)    printf "Usage: %s: [-a] [-b value] args\n" $0
          exit 2;;
    esac
done
if [ ! -z "$aflag" ]; then
    printf "Option -a specified\n"
fi
if [ ! -z "$bflag" ]; then
    printf 'Option -b "%s" specified\n' "$bval"
fi
shift $(($OPTIND - 1))
printf "Remaining arguments are: %s\n" "$*"

【結果】

$ ./opt.sh -a -b 123 attachment
Option -a specified
Option -b "123" specified
Remaining arguments are: attachment
$./opt.sh -a -b 123 -c attachment
./opt.sh: illegal option -- c
Usage: ./opt.sh: [-a] [-b value] args

【參考】

【問題】

  • getopt 和 getopts 有何不同?

【Free Screen Recorder】螢幕錄影


【軟體】

Free Screen Recorder http://www.nbxsoft.com/screen-recorder.php

【目的】

  1. 錄製螢幕畫面/教學文件成avi檔。
  2. 上傳到youtube分享。

【步驟】

  1. 先安裝軟體並開啟。
  2. 如果要選擇在錄影時才指定要錄製的區域。
    進入Options | General Options,把 Normal 打勾並選擇OK存檔。
    image
  3. 選擇 Record 按鈕(右上方紅色框框)開始錄製。
    image
  4. 按照之後所出現的提示,完成所要錄製的內容,以下就先略過。
  5. 常用快捷鍵
    1. F8 開始錄製
    2. F9 停止

【參考】

【延伸】

【Qt】霹靂燈(tbd)


【目的】
學習使用下面元件,製作出類似霹靂燈的效果。
  1. qTimer/qthread
  2. qLabel
【參考】

【Shell】比對字串


三個重點

  1. 利用 echo 導到 grep,取代由檔案輸入。
  2. 將結果導到 /dev/null,避免列印不必要的訊息到螢幕。
  3. 使用正規表示是來比對整個字串。

系統內定變數 $? 的結果

  • 0是成功。
  • 1是失敗。
$ echo abcd | grep '^abcd$' >> /dev/null; echo $?
0

 

【參考】

  1. shell script 裡如何使用正規表示法比對字串 ?
    http://ithelp.ithome.com.tw/question/10021305?tag=rt.rq
  2. 正規表示式的入門與應用(一)
    http://www.rtfiber.com.tw/~changyj/regex.1/index.html

【問題】

  1. 如何一次比對三個符合條件的字串。例如比對名字有 mary 或 may 或 john,只要其中一個成立就成立。
    $ echo "mary" | grep -E "^mary$|^may$|^john$" >>/dev/null; echo $?
    0
    $ echo "sam" | grep -E "^mary$|^may$|^john$" >>/dev/null; echo $?
    1
  2. 同事提醒上面 grep 的 -w,另一個用法。
    $ echo "mary msy john" | grep -w "john" >>/dev/null; echo $?
    0

【其它】

 

Ed32. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com