1. 檔案以#! /bin/bash開頭,其中的#!是約定的標記,告訴系統這個指令碼需要什麼編譯器來執行,即使用哪一種shell。
2.新建乙個檔案,first_shell.sh,然後輸入以下內容
#! /bin/bash
echo "hello world"
用./first_shell.sh命令執行,如果輸出hello world,則說明執行成功了,如果顯示-bash: ./first_shell.sh: permission denied,說明許可權不夠,需要新增可執行許可權,chmod o+x first_shell.sh
3.變數及賦值
#! /bin/bash
name=zhangsan
echo "my name is $name"
注意name和=和zhangsan之間沒有空格,有空格就會報錯。這幾行命令的意思是建立了乙個變數name,然後將zhangsan賦值給name,然後輸出用$name,加了乙個美元符號,將變數輸出。
4.傳遞引數
在執行shell指令碼時,可以向指令碼傳遞引數,傳遞時用空格隔開就行,指令碼中獲取用$n表示,n代表乙個數字,1為指令碼的第乙個引數,2為指令碼的第二個引數,以此類推,0代表可執行的檔案。
#! /bin/bash
name=zhangsan
echo "my name is $name"
echo "\$1 is $1"
echo "\$2 is $2"
執行./first_bash.sh 1 2 ,會出現
解釋一下,其中\$1是轉義,防止$1被當成變數而解析了。
5.$* ,$#,$?解釋
先看例子
有兩個引數,第乙個是1,第二個是2
$*將所有的引數都輸出來
$?是顯示最後命令的退出狀態,
0
表示沒有錯誤,其它數字表示有錯誤
$#代表有幾個引數
6.if 大小判斷的練習
#! /bin/bash
#if的練習
#2018-12-18
num=100
if (($num > 10));then
echo "$num大於10"
else
echo "$num小於10"
fi
上面的還可以寫成
#! /bin/bash
#if的練習
#2018-12-18
num=100
if [ $num -gt 10 ];then
echo "$num大於10"
else
echo "$num小於10"
fi
用乙個空括號來代替兩個小括號,需要注意的是if和前中括號之間要有空格,前中括號的右邊,後中括號的左邊必須有空格,否則會報錯。-gt就是大於的意思。還有-lt小於,-eq等於,-ne不等於,-ge大於等於,-le小於等於。
7.if 關於目錄的練習
#! /bin/bash
#if 關於目錄的練習
#2018-12-18
dir=/root/shell/20181218
if [ -d $dir ];then
echo -e "\033[32m$dir目錄已經存在,請退出\033[0m"
else
mkdir -p $dir
echo -e "\033[32m$dir目錄建立成功\033[0m"
fi
解釋一下,首先定義乙個變數並將乙個目錄賦給這個變數,然後用-d判斷目錄是否存在,不存在就建立這個目錄。echo -e "033[32m ************\033[0m"這個輸出的是帶顏色的文字。
8.if關於檔案的練習
#! /bin/bash
#關於檔案的練習
#2018-12-18
file=/root/shell/test.txt
if [ -f $file ];then
cat $file
else
echo -e "\033[32m建立檔案$file成功\033[0m"
echo "ok">>$file
fi
解釋一下,定義乙個變數,然後將乙個檔案的目錄賦值給這個變數,用-f判斷檔案存不存在,如果存在就輸出裡面的內容,如果不存在就輸出一段話,並且將ok追加到這個檔案中。
9.多個條件的判斷
#! /bin/bash
#成績等級輸出
score=80
if [ $score -ge 90 ];then
echo "a"
elif [ $score -ge 80 ];then
echo "b"
elif [ $score -ge 70 ];then
echo "c"
elif [ $score -ge 60 ];then
echo "d"
else
echo "e"
fi
10.其實上面的成績可以做成動態的,讓使用者輸入,然後判斷等級
#! /bin/bash
#成績等級輸出
score=$1
if [ -z $score ];then
echo "error:"
exit
fiif [ $score -ge 90 ];then
echo "a"
elif [ $score -ge 80 ];then
echo "b"
elif [ $score -ge 70 ];then
echo "c"
elif [ $score -ge 60 ];then
echo "d"
else
echo "e"
fi
裡面又多了個乙個 -z,代表為不為空,獲取第乙個引數,如果為空,就提出提示,然後停止往下進行。 初識Shell指令碼
說起shell,我們並不陌生,但很多人又不能很準確的說出shell到底是什麼,所以準確認識shell的定位,是很有必要的。一 shell的初識 shell的定位 shell是乙個用c語言編寫的程式,它是使用者使用linux的橋梁,是一種與核心交流的外殼應用程式的統稱。這個應用程式提供了乙個介面,使用...
初識Shell 變數
有三種方式 variable value variable value variable value variable 是變數名,value 是賦給變數的值。注意 單引號與雙引號的區別 使用乙個定義過的變數,只要在變數名前面加美元符號 即可。a echo aecho 加不加都行,不過一般最好加上。v...
shell指令碼初識
shell指令碼初識 了解shell shell是乙個用c語言編寫的程式,它是使用者使用linux的橋梁。shell既是一種命令語言,又是一種程式語言。指令碼結構 shell指令碼 shell script 即為一種shell編寫的指令碼程式 開頭要以 bin bash或是 bin sh 此特殊符號...