中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell語法是什么

發布時間:2021-10-20 17:53:33 來源:億速云 閱讀:168 作者:柒染 欄目:大數據

今天就跟大家聊聊有關shell語法是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

變量

rz="hufei"   # 定義靜態變量
date=`date`  # 賦值,動態變量

echo $rz   # hufei
echo '$rz' # '$rz'   不能用
echo "$rz"  # hufei
echo "'$rz'"  # 'hufei'
echo '"$rz"'  #'$rz'  不能用
echo `$rz`  # 報錯

echo $date
echo ${rz}addword  # 變量拼接
總結: 字符串帶上雙引號,變量引用不要用單引號

傳參

#!/bin/bash  # 生產中不一定是這一行
echo "執行的文件名:$0";
echo "第一個參數為:$1";
echo "第二個參數為:$2";
echo "第三個參數為:$3";

echo "個數:$#" # 參數個數
echo "傳遞參數作為一個字符:$*" #將所有參數拼為一個字符串
echo "PID: $$" # shell進程pid,防止誤kill

./test.sh 1 2 3

調試

  • 執行時加上 -x 或者 #!/bin/bash -x

數組

arr=(hello world jike make you)
echo ${arr} # 默認第一個
echo ${arr[*]} # 所有的,按空格分開
echo ${arr[4]} # 第四個
echo ${#arr[*]} # 數組個數

判斷

  • 方式1

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi
  • 方式2(命令形式)

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

if案例

a="abc"
b="abc"
c=3

# string
if [ $a == $b ]
then
	echo "a equal b"
else
	echo "a no equal b"
fi

# num
if [ $c == $b ];then echo "c equal b";else echo "c not equal b";fi

# 判斷文件是否存在
dir="/data/"
file="/data/file"
if [ ! -d $dir ];then echo "${dir}不存在";else echo "${dir}已存在";fi
if [ ! -f $file ];then echo "${file}不存在";else echo "${file}已存在";fi

參數說明:
-d  判斷對象是否存在,并且為目錄
-f  判斷對象是否存在,并且為常規文件
-s  判斷對象是否存在,并且長度不為0
-nt 判斷file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]

for循環

  • 方式1

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
for str in 'This is a string'
do
    echo $str
done
  • 方式2

for var in item1 item2 ... itemN; do command1; command2… done;

for循環獲取分割字符串,以,為例

s="hello,world,hadoop,jike,ou"

# 方法1
OLD_IFS="$IFS"
IFS=","
arr=($s)
IFS="$OLD_IFS"

for x in ${arr[*]}
do
	echo $x
done


# 方法2
arr2=(${s//,/ })
for x in ${arr2[*]}
do
	echo $x
done

while循環

while condition
do
    command
done
#!/bin/bash
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

case

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
echo '輸入 1 到 4 之間的數字:'
echo '你輸入的數字為:'
read aNum
case $aNum in
    1)  echo '你選擇了 1'
    ;;
    2)  echo '你選擇了 2'
    ;;
    3)  echo '你選擇了 3'
    ;;
    4)  echo '你選擇了 4'
    ;;
    *)  echo '你沒有輸入 1 到 4 之間的數字'
    ;;
esac

函數

  • 示例1(無返回值)

#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com

demoFun(){
    echo "這是我的第一個 shell 函數!"
}
echo "-----函數開始執行-----"
demoFun
echo "-----函數執行完畢-----"
  • 示例2(有返回值)

#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com

funWithReturn(){
    echo "這個函數會對輸入的兩個數字進行相加運算..."
    echo "輸入第一個數字: "
    read aNum
    echo "輸入第二個數字: "
    read anotherNum
    echo "兩個數字分別為 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "輸入的兩個數字之和為 $? !"
  • 示例3(接收參數)

#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com

funWithParam(){
    echo "第一個參數為 $1 !"
    echo "第二個參數為 $2 !"
    echo "第十個參數為 $10 !"
    echo "第十個參數為 ${10} !"
    echo "第十一個參數為 ${11} !"
    echo "參數總數有 $# 個!"
    echo "作為一個字符串輸出所有參數 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

包含文件

  • 包含文件可以用于封裝公共文件

. filename   # 注意點號(.)和文件名中間有一空格
或
source filename
#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com

#使用 . 號來引用test1.sh 文件
. ./test1.sh

# 或者使用以下包含文件代碼
# source ./test1.sh

echo "菜鳥教程官網地址:$url"

看完上述內容,你們對shell語法是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二手房| 桂林市| 靖江市| 新野县| 阿荣旗| 迭部县| 德庆县| 万载县| 凉城县| 鹤峰县| 宜川县| 沅江市| 黄大仙区| 沁阳市| 伊通| 临西县| 万安县| 漳浦县| 海安县| 奉节县| 西畴县| 南汇区| 湘潭县| 塔城市| 通道| 云阳县| 玉山县| 巴塘县| 东莞市| 樟树市| 壶关县| 永宁县| 舞钢市| 涿州市| 揭阳市| 饶阳县| 望谟县| 阿荣旗| 疏附县| 临沂市| 通州区|