Bash筆記

Bash筆記

函數

function hello {
    echo "hello, $*"
}

分支判斷

case "$1" in

1) echo "a";;
2) echo "b";;
*) echo "c";;

esac
echo -n "Do you agree with this? [yes or no]: "
read yno
case $yno in

[yY] | [yY][Ee][Ss] )
    echo "agreed"
    ;;
[nN] | [n|N][O|o] )
    ehco "not agreed"
    ;;
esac

循環

for i in $(ls); do
    echo $i
done

for i in `seq 1 10`; do
    echo $i
done

COUNTER=0
while [ $COUNTER -lt 10 ]; do
    echo $COUNTER
    let COUNTER=COUNTER+1
done

COUNTER=20
util [ $COUNTER -lt 10 ]; do
    echo $COUNTER
    let COUNTER-=1
done

條件判斷

if [ "foo" == "$1" ]; then
    echo "a"
else
    echo "b"
fi

經常使用條件

[ -a FILE ] # 是否文件存在
[ -b FILE ] # 是否block文件
[ -c FILE ] # 是否字符文件
[ -d FILE ] # 是否目錄存在
[ -e FILE ] # 是否文件存在
[ -f FILE ] # 是否普通文件
[ -h FILE ] # 是否符號連接
[ -p FILE ] # 是否管道
[ -r FILE ] # 是否可讀
[ -s FILE ] # 是否非空文件
[ -w FILE ] # 是否可寫
[ -x FILE ] # 是否可執行
[ FILE1 -nt FILE2 ] # 是否FILE1比FILE2新
[ FILE1 -nt FILE2 ] # 是否FILE1比FILE2舊
[ -z STRING ] # 是否空字符串
[ -n STIRNG ] # 是否非空字符串
[ STRING ] # 是否非空字符串
[ STRING1 == STRING2 ] # 是否STRING1等於STRING2
[ STRING1 != STRING2 ] # 是否STRING1不等於STRING2
[ STRING1 < STRING2 ] # 是否STRING1小於STRING2
[ STRING1 > STRING2 ] # 是否STRING1大於STRING2
[ ARG1 OP ARG2 ] # 關係判斷。OP是-eq, -ne, -lt, -le, -gt, -ge之一。
# 複合條件
[ !EXPR ]
[ (EXPR) ]
[ EXPR1 -a EXPR2 ] # and
[ EXPR1 -o EXPR2 ] # or

本地變量

function foo {
    local x=1
    echo $x
}

用戶接口

OPTIONS="Hello Quit"
select opt in $OPTIONS; do
    if [ "$opt" = "Quit" ]; then
      echo done
      exit
    elif [ "$opt" = "Hello" ]; then
      echo Hello World
    else
      clear
      echo bad option
    fi
done
read name email
echo $name $email

參考資料

相關文章
相關標籤/搜索