Title here
Summary here
#!/usr/bin/env bash
=
號兩邊唔可以有空格。
name=foo
可以解釋變量。
name=foo
echo "hello, $name" # hello, foo
echo "hello, \$\$" # hello, $$
echo "hello, \"\"" # hello, ""
唔解釋變量,只有單引號係特殊字符。
name=foo
echo 'hello, $name' # hello, $name
echo 'hello, $$' # hello, $$
echo 'hello, ""' # hello, ""
要輸出單引號,需要先關閉單引號。
echo 'I'\''m fine' # I'm fine
有反單號同 $()
兩種用法。
result=`date`
result=$(date)
推薦使用 $()
,可讀性更好,更多例子如下:
echo "dir is: $(pwd)"
count=$(ls $(pwd) | wc -l)
喺呢度 ls
冇使用 -l
選項,但 count 嘅值係 4,原因喺呢度。
標準輸出重定向 >
,新建/覆蓋文件。
cmd > file
追加輸出重定向 >>
。
cmd >> file
標準錯誤重定向 2>
,新建/覆蓋文件。
cmd 2> file
標準輸出同錯誤重定向到唔同文件。
cmd > foo.log 2> bar.log
標準輸出同錯誤重定向到同一文件。
ls 404 > foobar.log 2>&1
常用方式,使用 <
符號。
echo "a b c" > foo
wc < foo
1 3 6
內聯重定向,Inline Input Redirection。
wc << FOO
apple
banana
cat
FOO
3 3 17
FOO 為自定義標記,用於多行輸入。
反人類嘅數學運算指令,+
號兩邊嘅空格唔可以少。
expr 2 + 5
*
號係通配符,仲要轉義。
expr 2 \* 5
只有整除,唔支持浮點數。
expr 24 / 10
可以使用 []
執行數學運算。
var1=$[1+5*2]
var2=$[2*(3+2)]
精確數學運算計算器,全稱 Basic/Bench Calculator。
bc
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
4*2.5
10.0
quit
-q
選項唔會打印上面嗰串英文歡迎語。
bc -q
可以直接使用浮點數計算。
2.5*5
12.5
除法會用到 scale
變量,默認值為 0,表示整除。
scale=2
10/3
表示保留 2 位小數,scale
變量僅對除法有效。
foo=$(echo "scale=2; 10/3" | bc)
var1=10.24
foo=$(bc << EOF
scale=2
a=2
$var1/a
EOF
)
腳本嘅默認退出碼係 0,表示正常退出,可以使用 exit
改變。
exit 5
退出碼嘅範圍係 0-255,取模(%256)。