最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

linux shell編程

2023-03-12 19:57 作者:蕪湖小量化  | 我要投稿

shell是一個(gè)命令行解釋器,負(fù)責(zé)把用戶(hù)的命令解釋成linux內(nèi)核能夠識(shí)別的命令,傳遞給內(nèi)核執(zhí)行
內(nèi)核將執(zhí)行后的執(zhí)行返回給shell,shell再將執(zhí)行結(jié)果顯示出來(lái)
bash是比較常用的shell程序

shell腳本的hello world
echo hello world ? ? 使用命令輸出hello world

nano hello.sh ? ? 創(chuàng)建hello.sh文件
#!/bin/bash ? ? ? 寫(xiě)入內(nèi)容 ?#!指定該腳本的解釋器 ?/bin/bash 解釋器的絕對(duì)路徑
echo hello world
sudo chmod +x hello.sh ? ? ?為文件添加可執(zhí)行權(quán)限
./hello.sh ? ? ?執(zhí)行hello.sh

變量的聲明

給x賦值并且打?。?br>x=test
echo $x ? ? 此處$操作符是對(duì)變量的引用

指定變量的類(lèi)型 常用命令 typeset / declare
declare參數(shù):
-i 定義一個(gè)整數(shù)類(lèi)型的變量
-a 定義一個(gè)數(shù)組類(lèi)型的變量
-f 定義一個(gè)函數(shù)類(lèi)型的變量
-r 定義一個(gè)只讀變量

定義整數(shù)類(lèi)型
declare -i x x=90
echo $x

定義只讀類(lèi)型
declare -r x x=test
x=test2 ? ? ?由于x為只讀變量,會(huì)提示無(wú)法修改
readonly x=test ? ? 同樣可以定義x為只讀變量

declare -i x x=100
unset x ? ?可以實(shí)現(xiàn)x變量的銷(xiāo)毀

變量可以使用關(guān)鍵詞之外的字符串作為變量名 但是不可以使用數(shù)字開(kāi)頭

變量賦值
1.使用=符號(hào)復(fù)制
2.read 變量名 ?變量可以是用戶(hù)已經(jīng)定義的,也可以是為定義的 例如read x 之后等待用戶(hù)輸入,回車(chē)結(jié)束輸入,賦值變量

read x
study life best life ? ? ?此處是用戶(hù)輸入內(nèi)容
echo $x
返回-----------
study life best life

變量的引用
1.$x
2.${x}world ? 變量之后還有字符串的引用 ?會(huì)自動(dòng)拼接后面的字符串
3."${x}" ? ? 一般用于含有空格的引用

變量分類(lèi)
內(nèi)部變量,環(huán)境變量,參數(shù)變量

export ? ?查看環(huán)境變量
echo $PATH ? ?輸出path環(huán)境變量的值
export PATH = ~/lala/test: $PATH ?追加新路徑~/lala/test到PATH

shell中的引號(hào)
定義一個(gè)變量并賦值含有空格的字符串
x = "hello world"
echo $x

單雙引號(hào)的區(qū)別
雙引號(hào)的能夠正常輸出變量值
x = world
echo "hello ${x}" ? ? ?輸出 hello world
echo 'hello ${x}' ? ? ?輸出 hello ${x}

反引號(hào)`可以將shell命令的執(zhí)行結(jié)果作為參數(shù)賦給某個(gè)變量,達(dá)到命令替換的效果
rd=`ls`|echo $rd
返回--------------------
公共的 模板 視頻 圖片 文檔 下載 音樂(lè) 桌面 ?pycharm PycharmProjects snap

同樣的使用$()也可以實(shí)現(xiàn)命令的替換

使用反引號(hào)傳遞信息
rm `ls|grep hello.sh` ? ? 刪除ls列表中的hello.sh文件


變量的間接引用 使用!操作符
x=science
y=x
echo $y ? ? 輸出結(jié)果 x
echo ${!y} ? ? 輸出結(jié)果science
使用間接引用的時(shí)候需要注意特殊字符的處理


命令別名(對(duì)很長(zhǎng)的命令把指令替換 alias)
alias long="ls -l | grep pycharm" ? ? ?命令別名
long
返回----------------------
drwxr-xr-x 8 lala lala ? ?4096 ?1月 20 ?1970 pycharm

unalias long ? ? 銷(xiāo)毀別名

加減運(yùn)算
x=1
y=3
i=$(($y-$x))
echo $i ? ?輸出結(jié)果2

取商取余 / %
i=$(($y / $x))

自增,自減運(yùn)算
$(x++) $(++x) ?$(x--) $(--x)

位運(yùn)算(對(duì)二進(jìn)制數(shù)據(jù),進(jìn)行測(cè)試,移位,抽取等)
x=1 ? 00000001 取反 11111110

# 計(jì)算機(jī)中 二進(jìn)制以補(bǔ)碼格式存儲(chǔ)于內(nèi)存:十進(jìn)制數(shù)是以二進(jìn)制形式進(jìn)行邏輯運(yùn)算的。二進(jìn)制中為了區(qū)分正負(fù)數(shù),設(shè)定了符號(hào)位。
# 正因?yàn)榉?hào)位的存在。計(jì)算機(jī)內(nèi)存中存放二進(jìn)制時(shí)是以補(bǔ)碼的格式存儲(chǔ)。
# 即計(jì)算機(jī)中所有的二進(jìn)制都是補(bǔ)碼形式存在。那么對(duì)二進(jìn)制取反操作是對(duì)其補(bǔ)碼進(jìn)行取反操作。
# 計(jì)算機(jī)中 所有的負(fù)數(shù)以其補(bǔ)碼形式表示。
# 按位取反:對(duì)二進(jìn)制補(bǔ)碼進(jìn)行取反。(0轉(zhuǎn)1,1轉(zhuǎn)0)。
# 原碼:在數(shù)值前面增加一位符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。
# 反碼:正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼對(duì)其原碼逐位取反(符號(hào)位除外)。
# 補(bǔ)碼:正數(shù)的補(bǔ)碼與其原碼相同;負(fù)數(shù)的補(bǔ)碼是在其反碼的末位+1。
# 按位取反:~X = -(X+1)
# 1.十進(jìn)制 → 2.二進(jìn)制原碼 → 3.二進(jìn)制補(bǔ)碼 → 4.按位取反→ 5.二進(jìn)制原碼 → 6.十進(jìn)制
# eg:6
# 000000110 11111001 11111000 = -7
# eg:-7
# 11111000 00000111 00000110 = 6

x=1 移位 ?x=00000010 移位后=2
echo $((x<<1))
x=1 y=2 與運(yùn)算 ?x=00000001 y=00000010 按位與時(shí) ?0與0=0 ?1與0=0 1與1=1 x&y=00000000=0
echo $((x&y))
x=1 y=2 或運(yùn)算 ?x=00000001 y=00000010 按位或時(shí) ?0或0=0 ?1或0=1 1或1=1 x|y=00000011=3
echo $((x|y))
x=1 y=2 異或運(yùn)算 x=00000001 y=00000010 按位異或 0或0=0 ?1或0=1 1或1=0 x^y=00000011=3

邏輯運(yùn)算符
-a 與 -o 或 !非 ?&& 與與(同真) ?||或或(或真)
運(yùn)算符優(yōu)先級(jí)(查表)

let 命令進(jìn)行算術(shù)運(yùn)算
x=10
y=20
let z= $x + $y

shell 支持三種條件測(cè)試語(yǔ)法

test condition
[condition]
[[condition]]

文件測(cè)試/字符串測(cè)試/整數(shù)值測(cè)試


if語(yǔ)句標(biāo)準(zhǔn)語(yǔ)法

if [];then ? ? ?
? ?******** ? ?
elif[];then
? ?********
else
? ?********
fi ? ? ?shell中的f

case語(yǔ)句語(yǔ)法
case "變量名" in
? ?“var1”)
? ?語(yǔ)句
? ?;;
? ?“var2”)
? ?語(yǔ)句
? ?;;
? ?“var3”)
? ?語(yǔ)句
? ?;;
? ?*)
? ?語(yǔ)句
? ?;;
esac

var1~var3為匹配條件,如
在條件可以使用正則匹配

for/while/until/

for var in list
do
? ?循環(huán)語(yǔ)句
done

continue和break語(yǔ)句
nano continue

文件 continue.sh
#!/bin/bash

for var in 1 2 3
do
if [ "$var" -eq
? ? ? ?then
? ? ? ? ? ? ? ?
? ? ? ?fi
? ? ? ?echo $va
done


./continue.sh

定義數(shù)組的幾種方式
1.直接定義
a1=(1 2 3 4 5)
2.聲明數(shù)組后定義
declare -a a2
a2=("a" "b" "c" "d" "e")
3.a3=( ? ? ? 可以手動(dòng)回車(chē)輸入數(shù)組中每個(gè)元素
>1
>2
>3
>4
>5
>)
4.把包含空格的字符串直接轉(zhuǎn)化為數(shù)組
data="a b c d e"
a4=($data)
5.使用索引的方法
a5=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5)

使用unset可以銷(xiāo)毀數(shù)組和數(shù)組索引值
unset a1[4] ? ?銷(xiāo)毀數(shù)組中第4個(gè)元素

獲取數(shù)組的長(zhǎng)度
${#array[@]}
${#array[*]}

數(shù)組切片
${array[@]:m:n}

數(shù)組替換
${array[@]/from/to} ? ? from數(shù)組中原來(lái)的字符串 ?to替換后的字符串

函數(shù)
function 函數(shù)名()
{
? ?函數(shù)語(yǔ)句
? ?return ? ? ? ? ? ? return返回值(可選)
}

文本處理

格式化輸出
\b ?退格
\r ?代替enter
\t ?水平tab鍵
\v ?垂直tab鍵
\xNN ?轉(zhuǎn)換數(shù)字為字符
%ns ?輸出n個(gè)字符
%ni ?輸出n個(gè)整數(shù)字符
%N.nf ?輸出小數(shù) 保留n位小數(shù)

printf "%s\n" 1 2 3 4 ? ?單個(gè)字符換行輸出1234
另外常用的處理文本命令 sed awk可以自行了解。

linux shell編程的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
灌阳县| 陆河县| 竹北市| 通州市| 江山市| 隆回县| 工布江达县| 青岛市| 蓝山县| 东丰县| 邓州市| 花垣县| 于田县| 维西| 新巴尔虎左旗| 陕西省| 乐平市| 天门市| 通许县| 滁州市| 永胜县| 衡阳县| 德州市| 佳木斯市| 准格尔旗| 宁蒗| 大悟县| 惠安县| 柳林县| 湾仔区| 奉节县| 通榆县| 岳普湖县| 开封县| 遂溪县| 沛县| 南宁市| 彝良县| 隆林| 阳泉市| 南乐县|