學習內容——shell指令碼
1.簡述shell:shell是乙個命令列直譯器,她接收應用程式/使用者命令,然後呼叫作業系統核心。
2.shell解析器
linux提供的shell直譯器有:cat /etc/shells
!!!重要記住的是這兩個
01: /bin/sh 是bash的乙個快捷方式
02: /bin/bash bash是大多數linux預設的shell,包含的功能幾乎可以涵蓋shell所有的功能
3.shell指令碼入門
01.指令碼格式
指令碼以#!/bin/bash或者#!/bin/env bash開頭(表示指定解析器)
02.shell的編寫格式
vi/vim sss.sh 字尾.sh
03.shell的執行命令
第一種01: sh sss.sh sh+指令碼的相對路徑
02:sh 絕對路徑 sh+指令碼的絕對路徑
03:bash sss.sh bash+指令碼的相對路徑
04:bash 絕對路徑 bash+指令碼的絕對路徑
第二種(必須具有可執行的許可權+x)
01:./sss.sh 相對路徑
02:絕對路徑sss.sh 絕對路徑
04.shell多命令處理
需求:在/home/jinghang/目錄下建立乙個banzhang.txt,在banzhang.txt檔案中增加「i love you」,執行完畢後列印「報告班長,任務在2023年12月14日 xx:xx:xx 執行完畢」
實操:#!/bin/bash
cd /home/jinghang
touch cls.txt
echo "i love you" >>cls.txt
4.shell中的變數
01.系統常用變數
$home $pwd $shell $user 等
echo $pwd
02.自定義變數
001.基本語法
1)定義變數:變數名=變數值
2)撤銷變數:unset 變數名
3)宣告靜態變數:readonly變數,注意:不能unset
002.變數定義規則
1)變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭,環境變數名建議大寫。
2)等號兩側不能有空格
3)在bash中,變數預設型別都是字串型別,無法直接進行數值運算。
4)變數的值如果有空格,需要使用雙引號或單引號括起來。
003.實操
(1)定義變數a
[jinghang@hadoop101 datas]$ a=5
[jinghang@hadoop101 datas]$ echo $a
5(2)給變數a重新賦值
[jinghang@hadoop101 datas]$ a=8
[jinghang@hadoop101 datas]$ echo $a
8(3)撤銷變數a
[jinghang@hadoop101 datas]$ unset a
[jinghang@hadoop101 datas]$ echo $a
(4)宣告靜態的變數b=2,不能unset
[jinghang@hadoop101 datas]$ readonly b=2
[jinghang@hadoop101 datas]$ echo $b
2[jinghang@hadoop101 datas]$ b=9
-bash: b: readonly variable
(5)在bash中,變數預設型別都是字串型別,無法直接進行數值運算
[jinghang@hadoop101 ~]$ c=1+2
[jinghang@hadoop101 ~]$ echo $c
1+2(6)變數的值如果有空格,需要使用雙引號或單引號括起來
[jinghang@hadoop101 ~]$ d=i love banzhang
-bash: world: command not found
[jinghang@hadoop101 ~]$ d="i love banzhang"
[jinghang@hadoop101 ~]$ echo $a
i love banzhang
03.特殊變數 $n
$n(功能描述:n為數字,$0代表該指令碼名稱,$1-$9代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如$)
04.特殊變數 $#
$#(功能描述:獲取所有輸入引數個數,常用於迴圈)
05.特殊變數 $*,$@
$* (功能描述:這個變數代表命令列中所有的引數,$*把所有的引數看成乙個整體)
$@ (功能描述:這個變數也代表命令列中所有的引數,不過$@把每個引數區分對待)
06.特殊變數 $?
$?(功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上乙個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上乙個命令執行不正確了。)
Shell指令碼(三) Shell指令碼入門
1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...
shell 指令碼入門
shell 是乙個用 c 語言編寫的程式,它是使用者使用 linux 的橋梁。shell 既是一種命令語言,又是一種程式語言。shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務。ken thompson 的 sh 是第一種 unix shell,win...
shell指令碼入門
str wxz echo 輸出 3 提取子字串 以下例項從字串第 2 個字元開始擷取 4 個字元 string the shell script is great echo 輸出 he s查詢子字串 查詢字元 i 或 s 的位置 string runoob is a great company ec...