shell入门

1、打开shell世界的大门

#!/bin/bash
echo 'Hello World!'

2、变量的最基本使用,定义一个name变量并输出

#!/bin/bash
name='Shaw Lee'
echo "my name is $name"

3、定义一个变量,输出当前时间,要求格式为“年-月-日 时:分:秒”

#!/bin/bash
dt=`date +'%F %T'` # 注意这里要用反引号(``)包括
echo $dt

4、只读变量(了解)

语法:readonly 变量名

#!/bin/bash
num=10
readonly num
num=20
echo $num
# 输出:10

5、接受用户输入

语法:read -p 提示信息 变量名

案例:编写一个脚本,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件

#!/bin/bash
read -p 请输入需要创建的文件路径: filepath
touch $filepath
echo '文件创建成功'
ls -l $filepath

6、删除变量(了解)

语法:unset 变量名

#!/bin/bash
b=20
echo $b
unset b
echo $b

7、条件判断语句

#!/bin/bash
read -p 请输入你的分数: goal

echo '你的评级是:'

if [ $goal -lt 60 ]
then
    echo '    不及格'
elif [ $goal -lt 80 ]
then
    echo '    良好'
else
    echo '    优秀'
fi

8、算数运算符

#!/bin/bash
a=10
b=20
echo "a=$a"
echo "b=$b"
echo ""
echo 'a+b='`expr $a + $b`
echo 'a-b='`expr $a - $b`
echo 'a*b='`expr $a \* $b`
echo 'b/a='`expr $b / $a`
echo 'b%a='`expr $b % $a`

# 判断是否相等
if [ $a == $b ]
then
    echo 'a等于b'
else
    echo 'a不等于b'
fi

# 判断是否不相等
if [ $a != $b ]
then
    echo 'a不等于b'
else
    echo 'a等于b'
fi

9、关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字

运算符 英文解释 说明 语法
-eq equal 检测两个数是否相等相等返回true [ a -eqb ]
-ne not equal 检测两个数是否相等不相等返回true [ a -neb ]
-gt great than 检测左边的数是否大于右边的数,如果是,返回true [ a -gtb ]
-lt less than 检测左边的数是否小于右边的数,如果是,返回true [ a -ltb ]
-ge great than or equal 检测左边的数是否大于等于右边的数,如果是,返回true [ a -geb ]
-le less than or equal 检测左边的数是否小于等于右边的数,如果是,返回true [ a -leb ]
#!/bin/bash
a=20
b=10

echo "a=$a"
echo "b=$b"

echo

# 判断相等
if [ $a -eq $b ]
then
    echo 'a=b'
else
    echo 'a≠b'
fi

# 判断不相等
if [ $a -ne $b ]
then
    echo 'a≠b'
else
    echo 'a=b'
fi

# 判断是否大于
if [ $a -gt $b ]
then
    echo 'a>b'
else
    echo 'a<b'
fi

# 判断是否小于
if [ $a -lt $b ]
then
    echo 'a<b'
else
    echo 'a>b'
fi

# 判断是否大于等于
if [ $a -ge $b ]
then
    echo 'a>=b'
else
    echo 'a<b'
fi

# 判断是否小于等于
if [ $a -le $b ]
then
    echo 'a<=b'
else
    echo 'a>b'
fi

10、逻辑上运算符

运算符 说明 语法
非运算,表达式为true则返回false,否则返回true [ ! false ]
-o(or) 或(或者)运算,有一个表达式为true则返回true [ a -lt 20 -ob -gt 100 ]
-a(and) 与(并且)运算,两个表达式都为true才返回true [ a -lt 20 -ab -gt 100 ]
#!/bin/bash
a=10
b=20

# 非运算
if [ ! $a -lt $b ]
then
    echo 'a > b'
else
    echo 'a < b'
fi

# 或运算
if [ $a -lt 20 -o $b -lt 20 ]
then
    echo '真'
fi

# 与运算
if [ $a -gt 5 -a $b -gt 10 ]
then
    echo '真'
fi

11、字符串运算符

运算符 说明 语法
= 检测两个字符串是否相等,相等返回true [ a =b ]
!= 检测两个字符串是否相等,不相等返回true [ a !=b ]
-z (zero) 检测字符串长度是否为0,为0返回true [ -z $a ]
-n 检测字符串长度是否为0,不为0返回true [ -n $a ]
str 检测字符串是否为空,不为空返回true [ $a ]
#!/bin/bash
a='abc'
b='def'

if [ $a = $b ]
then
    echo 'a等于b'
else
    echo 'a不等于b'
fi

if [ $a != $b ]
then
    echo 'a不等于b'
else
    echo 'a等于b'
fi


if [ -z $a ]
then
    echo 'a等于0'
else
    echo 'a不等于0'
fi


if [ -n $a ]
then
    echo 'a不等于0'
else
    echo 'a等于0'
fi


if [ $a ]
then
    echo 'a不为空'
else
    echo 'a为空'
fi

12、文件测试运算符(重点)

运算符 说明 语法
-d file 检测文档是否是目录,是则返回true [ -d $file ]
-f file 检测文档是否是文件,是则返回true [ -f $file ]
-r file 检测文件是否可读,是则返回true [ -r $file ]
-w file 检测文件是否可写,是则返回true [ -w $file ]
-x file 检测文件是否可执行,是则返回true [ -x $file ]
-e file 检测文件(包括目录)是否存在,存在则返回true [ -e $file ]
#!/bin/bash
file='/g/StudyDemo/shell_study/testFile.txt'
dir='/g/StudyDemo/shell_study/testDir'

if [ -d $dir ]
then
    echo 'dir是目录'
else
    echo 'dir不是目录'
fi

if [ -f $file ]
then
    echo 'file是文件'
else
    echo 'file不是文件'
fi

if [ -r $file ]
then
    echo 'file可读'
else
    echo 'file不可读'
fi

if [ -w $file ]
then
    echo 'file可写'
else
    echo 'file不可写'
fi

if [ -x $file ]
then
    echo 'file可执行'
else
    echo 'file不可执行'
fi

if [ -e $dir ]
then
    echo 'dir存在'
else
    echo 'dir不存在'
fi

13、shell脚本附带选项

# option.sh
#!/bin/bash
echo $0 $1 $2 $3
终端输入 #./option.sh a b c
在脚本中可以用"$1"表示a,"$2"表示b,以此类推。("$0"是执行的脚本文件名)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 1、什么是Shell? shell 由C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,...
    小米Metre阅读 289评论 0 0
  • Shell Shell编程之Hello World 编写一个hello world shell一般使用.sh作为后...
    cuzz_阅读 788评论 0 1
  • ​作者:老油条IT记 公众号:老油条IT记 #前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件...
    老油条IT记阅读 520评论 0 1
  • 背景 之前写了系列的shell实战的文章,得到了挺多小伙伴的关注,遇到有些对shell不太熟悉小伙伴,所以有个想法...
    aron1992阅读 821评论 1 1
  • 0. shell脚本执行 可使用自动显示git 分支的脚本来验证 1. source 通过source命令执行脚本...
    魔神断恨阅读 164评论 0 1