shell腳本基礎知識

1.shell腳本是一種非編譯,弱類型的語言,解釋型語言
弱類型 不需要聲明直接使用
解釋型 執行之時,不需編譯直接執行

2.shell的作用:
解釋執行用戶的命令;
用戶輸入一條命令,shell就解釋一條,交互式;
用戶事先寫一個shell腳本(Script),其中有很多命令,讓shell一次把這些命令執行完,而不用一條一條地敲命令,批處理(Batch )

3.解釋執行,不需編譯:
shell腳本是解釋執行的,不需要編譯,shell程序從腳本中一行一行讀取并執行這些命令,相當于一個用戶把腳本命令一行一行敲到shell提示符下進行。

4.shell執行腳本
例如編寫一個 test.sh 腳本
#!/bin/bash
echo “Today is a good day!”
cd ..
ls
shell腳本#表示注釋,如果# 位于第一行開頭,它表示該腳本使用后面指定的解釋器/bin/bash解釋執行。
*執行方式1. chmod +x test.sh
shell會fork一個子進程并調用exec執行 ./test.sh這個程序,exec系統調用把子進程的代碼段替換成 ./test.sh程序的代碼段,并從它的_start開始執行。第一行用Shebang 指定了解釋器,則用解釋器程序的代碼段替換當前進程,并且從解釋 器的_start開始執行,而這個文本文件被當作命令行參數傳給解釋器。因此,執行上述腳本相當于執行程序 。
* 執行方式2. /bin/bash test.sh
如果將命令行下輸入的命令用()括號括起來,那么也會fork出子Shell執行小括號中的命令, 一 行中可以輸入由分號;隔開的多個命令,比如: $ (cd ..;ls -l)

5.shell腳本變量
變量作左值不加空格,作右值要加,

符號提取內容。shell中變量不用定義直接使用。
myint=123
echo myint

,取變量值時用$,shell變量的值都是字符串,如果對一個沒有定義的變量取值,則值為空字符串。

shell變量:環境變量和普通變量
環境變量 可以被子進程及其子孫進程繼承的變量;
普通變量:只能在當前bash下有效,只存在于當前shell進程,用set命令可以顯示當前shell進程中定義的所有變量包括環境變量和本地變量。
echo 輸出命令自動打印空行 (echo命令是一條內建命令)
myenv=1234 在命令行上編譯,交互式bash下定義變量。
echo $myenv 結果為1234
export myenv 把myenv導成了環境變量
環境變量是任何進程都有的概念,否則會被shell解釋成命令和命令行參數。
unset命令可以刪除已定義的環境變量或本地變量
6.shift 命令行參數左移
這里寫圖片描述
shell腳本基礎知識
7.文件名代換
*匹配0個或多個任意字符
?匹配一個任意字符
[若干字符] 匹配方括號中出現的任意一個字符的一次出現

8.命令代換
例如:
#!/bin/bash
echo “Today is date +%Y:%m:%d
echo “Today is $(date +%Y:%m:%d)”

echo “Today is ‘date +%Y:%m:%d’”
運行結果:
這里寫圖片描述
9.轉義字符 \
\在shell中被用作轉義字符,用于去除緊跟其后的單個字符的特殊意義,緊跟其后的字符取字面值。

這里寫圖片描述
10.雙引號和單引號
單引號雙引號都表示字符串,單引號對所有內容不做解釋,雙引號對變量轉義會執行后再進行輸出。
注意:
“““““““““““
”””””””””””””””””’
不一樣,第一行的會把命令行中的date代換成日期,第二行的還是把它當做字符串打印出來。

Vim設置
Vim里面 set nu 設置行號 set nonu去掉行號 如果要復制Vim里面的內容有行號不太方便
可以選擇去掉行號后再復制
這里寫圖片描述

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98465

(1)
單爆手單爆手
上一篇 2018-05-14
下一篇 2018-05-14

相關推薦

欧美性久久久久