日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell编程--基本格式,基本语法,运算符,expr,(()),$[]

發布時間:2024/9/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell编程--基本格式,基本语法,运算符,expr,(()),$[] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

02/shell編程

Shell是用戶與內核進行交互操作的一種接口,目前最流行的Shell稱為bash Shell

Shell也是一門編程語言<解釋型的編程語言>,即shell腳本<就是在用linux的shell命令編程>

一個系統可以存在多個shell,可以通過cat /etc/shells命令查看系統中安裝的shell,不同的shell可能支持的命令語法是不相同的

2.1 基本格式

代碼寫在普通文本文件中,通常以 .sh為后綴名

vi hello.sh

#!/bin/bash??? ## 表示用哪一種shell解析器來解析執行我們的這個腳本程序

echo "hello world"?? ##? 注釋也可以寫在這里

## 這是一行注釋

?

執行腳本

sh hello.sh

?

或給腳本添加x權限,直接執行

chmod 755 hello.sh

./hello.sh

?

?

?

2.2 基本語法

2.2.1 系統變量

Linux Shell中的變量分為“系統變量”和“用戶自定義變量”

可以通過set命令查看系統變量

系統變量:$HOME、$PWD、$SHELL、$USER等等

?

2.2.2 自定義變量

1、語法

變量=值 (例如STR=abc)

等號兩側不能有空格

變量名稱一般習慣為大寫

使用變量: $arg

雙引號和單引號有區別

???? 雙引號僅將空格脫意,

???? 單引號會將變量引用比如$param脫意

?

2、示例

STR="hello world"

A=9

echo $A

echo $STR

如果想打印 hello worlds isgreater? 怎么辦?

echo $STRs is greate 行嗎?

不行,正確寫法是:

echo ${STR}s is greate

?

unset A 撤銷變量 A

readonly B=2 聲明靜態的變量 B=2,不能 unset

?

export? A?? #可把變量提升為當前shell進程中的全局環境變量,可供其他子shell程序使用

注意理解export:

[root@shizhan01 scripts]# vi a.sh

#!/bin/bash

a="a in a.sh"

echo $a

/root/scripts/b.sh

?

[root@shizhan01 scripts]# vi b.sh

#!/bin/bash

b="b in b.sh"

echo $b

echo $a

?

然后執行? ./a.sh ,會發現 b腳本中并沒有把a腳本中定義的a變量打印出來

?

如果要在b中打印出a腳本的變量a,需要在a腳本中把變量a做export定義

此時,a變量就成了a.sh腳本所在bash進程的全局變量,該進程的所有子進程都能訪問到變量a

?

?

另一種方式:

如果在a.sh腳本中用如下方式調用b.sh

.? ./b.sh??? ## 注意:重點關注最前面那個 “.”號

或者

source ./b.sh?? ##

則,b.sh就在a.sh所在的bash進程空間中運行

?

?

總結:

1a.sh中直接調用b.sh,會讓b.sha所在的bash進程的“子進程”空間中執行

2、而子進程空間只能訪問父進程中用export定義的變量

3、一個shell進程無法將自己定義的變量提升到父進程空間中去

4、“.”號執行腳本時,會讓腳本在調用者所在的shell進程空間中執行

?

?

3、反引號賦值

A=`ls -la`??? ## 反引號,運行里面的命令,并把結果返回給變量A

A=$(ls -la)?? ## 等價于反引號

?

?

4、特殊變量

$??表示上一個命令退出的狀態碼

$$?表示當前進程編號

$0 表示當前腳本名稱

$n 表示n位置的輸入參數(n代表數字,n>=1)

$# ? 表示參數的個數,常用于循環

$*和$@ 都表示參數列表?

?

?

注:$*與$@區別

$* 和 $@ 都表示傳遞給函數或腳本的所有參數

ü? 不被雙引號" "包含時——

$* 和 $@ 都以$1? $2? … $n 的形式組成參數列表

ü? 當它們被雙引號" "包含時——

"$*" 會將所有的參數作為一個整體,以"$1 $2 … $n"的形式組成一個整串;

"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式組成一個參數列表

?

?

2.3 運算符

2.3.1 算數運算

1、用expr

格式 expr m + n 或$((m+n)) 注意expr運算符間要有空格

例如計算(2+3 )×4 的值

1 .分步計算
???????? S=`expr 2 + 3`
???????? expr $S \* 4?????? ##??*號需要轉義

2.一步完成計算

???????? expr`expr 2 + 3 ` \* 4

???????? echo`expr \`expr 2 + 3\` \* 4`

?

2、用(())

((1+2))

(((2+3)*4))

count=1

((count++))

echo $count

?

但是要想取到運算結果,需要用$引用

a=$((1+2))

?

3、用$[]

a=$[1+2]

echo $a

?

?

總結

以上是生活随笔為你收集整理的shell编程--基本格式,基本语法,运算符,expr,(()),$[]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男生操男生网站 | 婷婷操| 久久香蕉影院 | 午夜剧场免费看 | 91精品啪在线观看国产线免费 | 成人欧美一区二区三区黑人孕妇 | 国产一级爱| 男女网站免费 | 婷婷看片 | 免费观看国产精品视频 | 国产免费91视频 | 日韩爱爱网站 | 好爽…又高潮了毛片免费看 | 大陆极品少妇内射aaaaa | 国产午夜视频在线播放 | 天天看夜夜爽 | 国产精品一区二区三区免费看 | 无码人妻精品一区二区三区蜜桃91 | 日韩久久一区二区 | 露脸啪啪清纯大学生美女 | 大黄网站在线观看 | 国产情侣一区 | 无码精品人妻一二三区红粉影视 | 91官网在线 | 久久久77| 中文字幕在线播放一区二区 | 无码精品人妻一二三区红粉影视 | 青青久久av北条麻妃黑人 | 男人肌肌桶女人肌肌 | 天堂а√在线中文在线鲁大师 | 性做久久久 | 99视频只有精品 | 成人欧美一区二区三区黑人动态图 | 亚洲嫩草影院 | 日韩欧美色 | 日韩欧美久久精品 | 第一宅男av导航入口 | 色窝窝无码一区二区三区成人网站 | 91成人免费观看 | 美女免费看片 | 亚洲品质自拍视频网站 | 变态视屏 | 成人久久久精品乱码一区二区三区 | 成年人在线观看视频 | 一本大道av伊人久久综合 | 青草国产| 五月天丁香 | 免费91看片 | 亚洲美女在线观看 | 日韩视频区| 日本va欧美va精品发布 | 91欧美一区二区 | 日韩av综合网 | 欧美精品xxx| 亚洲精品国产手机 | 国产福利在线观看视频 | 成人毛片在线 | 激情啪啪网站 | 在线观看免费高清在线观看 | 性感美女av在线 | 亚洲色图网友自拍 | 亚洲国产私拍精品国模在线观看 | 色综合久久中文字幕无码 | 亚洲综合福利 | 欧美一区精品 | 午夜毛片在线观看 | 伦理片一区二区三区 | 国产超碰人人爽人人做人人爱 | 放荡闺蜜高h季红豆h | 日本私人影院 | 国产伦精品一区二区三区在线 | 蜜桃视频网站 | 欧美日韩色片 | 欧美日本另类 | 91精品色 | 毛片网站视频 | 日韩欧美二区 | 俺来也俺也啪www色 欧洲一区二区视频 | 老头老太做爰xxx视频 | 日本阿v视频在线观看 | 亚洲国产成人自拍 | 欧美日韩在线一区二区 | 精品人妻人人做人人爽 | 青青草www| 情欲少妇人妻100篇 黄色一级片欧美 | 久热只有精品 | 国产精品v亚洲精品v日韩精品 | 国产精品美女久久久久av爽 | 国产无码精品在线播放 | 久久综合久久网 | 人妻精品一区二区三区 | 免费吃奶摸下激烈视频 | 极品色影视 | 黄色成人在线免费观看 | 色综合天天综合 | 国产初高中真实精品视频 | 黑人添美女bbb添高潮了 | 亚洲品质自拍 | www.色com|