初識shell命令

2021-09-03 07:53:54 字數 3503 閱讀 5768

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 此特殊符號...