shell程式設計

2021-08-26 18:13:31 字數 3468 閱讀 7848

helloworld.sh

## 輸出helloworld

echo

"hello world!"

addr="zhongguo shanghai"

## 輸出變數的值

echo

$addr

## 單引號與雙引號的區別

echo

"address:$addr"

## 輸出為:address:zhongguo shanghai

echo

'address:$addr'

## 輸出為:address:$addr

## 變數名在字串的前面時

name=tom

echo

"$name,hi!1"

## 這裡會將$nameehi當成乙個變數,所以輸出為: !2,取到的變數值為空,這時候需要使用下面的方式取值

echo

"$namehi!2"

echo

"$hi!3"

## 撤銷變數

unset name

echo

"$hi!4"

## 宣告靜態的變數

readonly age=18

## unset age 這句會報錯,因為age不能再改了

## 讓shell子程序訪問到本程序中的變數值,一下兩種方式,第二種方式開頭的"."相當於source,呼叫b.sh進行執行,

## b.sh中的內容為:#!bin/bash 換行 echo "b.sh---$addr"

source /root/b.sh

. ./b.sh

echo

"helloworld.sh---$addr"

## 呼叫function.sh中的函式

## 獲取hellorn的返回值

echo

"helloworld.sh---$retu"

b.sh

#!bin/bash

echo

"b.sh---$addr"

## read命令用於從控制台讀取輸入的資料,"[","]"兩邊必須有空格,"="兩邊必須有空格中如果直接寫了非空字元,即為true.什麼也不寫為false

## read空格-p空格"aaa"空格變數名

read -p "輸入你的使用者名稱:" name

printf

"**********===$**********==\n"

## 輸出

echo

"$name"

condition.sh

#!/bin/bash

## read命令用於從控制台讀取輸入的資料,"[","]"兩邊必須有空格,"="兩邊必須有空格中如果直接寫了非空字元,即為true.什麼也不寫為false

read -p "輸入你的使用者名稱:" name

printf

"**********===$**********==\n"

if [ $name = root ]

then

echo

"使用者:root"

echo

"hello,$,wolcome!"

elif [ $name = itcast ]

then

echo

"使用者:itcast"

echo

"hello,$,wolcome!"

else

echo

"hello,sb!"

fi##三元運算子[ condition ] && echo "true" || "false"

##當條件表示式為多個boolean表示式時

##方式一:[[ condition1 && condition2 ]]

##方式二:[ condition1 -a condition2 ] -a為and,-o為or

## 字串比較

##比較運算子 = != -z -n

##=相等,!=不相等,-z長度為0返回true,-n長度不為0返回true

## 數字比較

## -lt 小於

## -le 小於等於

## -eq 等於

## -gt 大於

## -ge 大於等於

## -ne 不等於

if [ 1 -ge 5 ]; then

echo ok;else

echo notok;fi

## 檔案判斷

## -d 是否為目錄

## -f 是否為檔案

if [ -f /root/b.sh ];then

echo ok;else

echo notok;fi

## -e 是否存在

## while

## case

## for

expression.sh

#!/bin/bash

## 運算子:計算(2 + 3) * 4 的值

## 方式一:分兩步計算

result=`expr 2 + 3`

echo

"2 + 3 = $result"

result=`expr $result \* 4`

echo

"5 * 4 = $result"

## 方式二:一步計算出結果,注意"\"的使用,運算子前後必須有空格

result=`expr \`expr 2 + 3\` \* 4`

echo

"(2 + 3) * 5 = $result"

## 方式三:用(())

result=$((1+1))

echo

"1 + 1 = $result"

result=$(((2+3)*4))

echo

"(2 + 3) * 4 = $result"

## 方式四:用

result=$[(2+3)*4]

echo

"(2 + 3) * 4 = $result"

function.sh

#!/bin/bash

##函式無引數無返回值的定義

hello

()## 呼叫函式

hello

## 有返回值的函式

hellorn

()## 呼叫

hellorn

## 獲取函式返回值

retu=$?

echo

"function.sh---$retu"

. ./helloworld.sh

## 有引數的函式

hellocan()"

echo

"引數11--$"

}## 呼叫

hellocan 123

4567

891000

2000

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 形式儲存所有輸入的命令列引數 以 ...