cat t1
echo $1 $2 $3
set m1 m2 m3
echo $1 $2 $3
sh t1 -3 a1 a2 a3
a1 a2 a3
m1 m2 m3
shell 中雙引號(" ") 單引號(' ') 倒引號(` `)
1.雙雙引號 除了$ ,倒引號, \ 保留其特殊功能外 其餘做普通字元處理
2.單引號所有字元都作為普通字元
3.倒引號 `pwd` 解釋命令 如果巢狀 內層必須要(\)轉義 my = `echo my = \`pwd\``
順序操作符
邏輯與(&&)成功返回0 步成功返回1
檔案測試
-r file 可讀
-w file 可寫
-x file 可執行
-f file 普通檔案
-dfile 目錄檔案
-pfile fifo檔案
-s file 不是空檔案
字串測試
str 不是空字串
str1 = str2 str1等於str2(等號前後有空格)
str1 != str2 str1不等與str2
-n str 長度不為0
-z str 長度為0
eg: [ "$1" = "$2" ] or test "$1" = "$2"
[ "$1" = "yes" ] or test "$1" = "yes"
數值測試
n1 -eq n2 n1==n2
n1 -ne n2 n1!=n2
n1 -lt n2 n1
n1 -le n2 n1<=n2
n1 -gt n2 n1>n2
n1 -ge n2 n1>=n2
[ "$1" -gt 10 ] or test "$1" -gt 10
邏輯操作符號組合測試語句
! 非-a 與(and)
-o 或 (or)
( ) 優先括號前後有空格 並且用\ 轉義
eg:[ ! "$1" -le 0 ] or ! test "$1" -le 0
[ -f "$1" -a -w "$1"] or test -f"$1" -a -w "$1"
[ \( "$a" -gt 0 -a "$a" -lt 10 \) -a "$a" -ne 5 ]
case
case $1 in
file) echo "is file" ;;
dir) echo "is dir" ;;
*) echo "others";;
esac
for
for people in tom jack john lucy do
echo $people
done
for i in *.c do
cat $i
done
dir=$1;shift
if [ -d $dir ]
then cd $dir
for name #for name == for name in $ *
doif [ -f $name ]
then cat $name
echo "end of $/$name"
else echo "invalid file name:$/$name"
fidone
else echo "bad directory name:$dir" fi
Shell程式設計 shell特性
linux會預設記錄1000條歷史記錄,可通過 echo histsize 檢視,如果講histsize更改為2000,那麼會預設儲存2000條。1000條記錄儲存在家目錄的 bash history 中,僅當使用者正常退出當前shell時,當前shell中執行的命令才會儲存到 bash histo...
Shell程式設計 Shell函式
shell函式 1.將命令序列按格寫在一起 2.可方便重複使用命令序列 3.shell函式定義 function 函式名 4.呼叫函式的方法 函式名 引數1 引數2 5.shell函式應用示例 1 兩個數字求和 要求 通過sum 定義函式 兩個數求和 方法一 root localhost vim d...
Shell程式設計
1 建立指令碼 vi emacs等即可 bin sh 2 shell變數 對shell來講,所有的變數的取值都是乙個字串 shell是一種解釋性語言,變數無需事先定義 shell中的系統變數 程式命令列引數的數目 儲存前乙個命令的返回值 0 當前程式名 以 1 2 形式儲存所有輸入的命令列引數 以 ...