Shell笔记1

Linux 就会依据 /etc/passwd 文件的配置给我们一个 shell

1. 基础

Shell文件以.sh为后缀,
$ chmod +x test.sh,
$ ./test.sh

#!/bin/bash
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

2. 变量

定义变量的时候无需用美元符$,使用变量时要加上$。

your_name="xujiguang"
echo $your_name
echo ${your_name} ->可选,但是原因。。。

变量重新赋值

myUrl="http://see.xidian.edu.cn/cpp/linux/"
echo ${myUrl}
#无需美元符
myUrl="http://see.xidian.edu.cn/cpp/shell/"
echo ${myUrl}

只读变量

myUrl="http://see.xidian.edu.cn/cpp/shell/"
readonly myUrl

删除变量

unset myUrl  -->不能删除只读变量

Shell特殊变量

如果传递的参数有空格必须用""包围字符串


Shell特殊变量

$@和$*的区别

#./test.shell "china is a big contry"
a = 10
echo -e "Value of a is $a \\n"  ->-e代表对转义字符进行替换,默认为-E不转义

3. 命令替换

#Shell可以先执行命令,将结果暂存
`command`
now_date = `date`
echo $now_date
USERS=`who | wc -l`
echo "Logged in user are $USERS"

4. 变量替换

Shell变量替换

5. 运算符

#!/bin/bash

val=`expr 2 + 2` 
echo "Total value : $val"

输出结果

Total value : 4

三点注意:

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
  • 完整的表达式要被 \\\ 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
  • 乘法需要反斜杠转义 val=\$a \\\\* $b

6. 条件语句

if [ $a == $b ]
then
  echo "a is equal to b"
fi
  • 注意点,条件表达式要放在[]之间,而且[$a==$b]是错误的写法,必须写成[ $a == $b ]

7. 关系运算符

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

a=10
b=20
if [ $a -eq $b ]
then
  echo "$a -eq $b : a is equal to b"
else
  echo "$a -eq $b : a is not equal to b"
fi

其他

运算符 说明 举例
-ne 检测两个数是否相等,不相等返回true [ $a -eq $b ]
-gt 检测左边的数是否大于右边的数 [ $a -gt $b ]
-lt 检测左边的数是否小于右边的数 [ $a -lt $b ]
-ge 检测左边的数是否大于等于右边的数 [ $a -ge $b ]
-le 检测左边的数是否小于等于右边的数 [$a -le $b ]

布尔运算符
a=10
b=20

运算符 说明 举例
! 非运算 [ !false]
-o 或运算 [ $a -lt 20 -o $b -gt 100 ] 返回true
-a 与运算 [ $a -lt 20 -a $b -gt 100 ] 返回 false

字符串运算符
a="abc"
b="bcd"

运算符 说明 举例
= 检测字符串是否相等 [ $a = $b ] 返回false
!= 检测字符串是否不相等 [ $a != $b ] 返回true
-z 检测字符串长度是否为0 [ -z $a ] 返回false
-n 检测字符串长度是否不为0 [ -n $a ] 返回true
str 检测字符串是否为空 [ $a ]返回true

8.文件测试运算符

file = "/var/www/test.sh"
运算符 说明 举例
-r 文件是否可读 可读返回true
-w 文件是否可写 可写返回true
-x 文件是否可执行 可执行返回true
-d 是否是目录 是目录返回true
-s 文件大小是否为0 文件大小为0,返回true
-e 文件是否存在 存在返回true
-f 检测是否是普通文件(不是目录也不是设备文件) 普通文件返回true

9. 字符串

  • 双引号中可以有变量
  • 双引号中可以有转移字符

获取字符串长度

string = "abcd"
echo ${#string}

提取子串

string="alibaba is a greate company"
echo ${string:1:4} #输出liba [1:4]

查找子字符串

string="alibaba is a greate company"
echo `expr index "$string" is`

字符串

不知道是什么

变量配置方式 说明
${变量#关键词} 如果变量从头开始数据符合[关键词],则将符合的最短的删除
${变量##关键词} 如果变量从头开始数据符合[关键词],则将符合的最长的删除
${变量%关键词} 如果变量内容从尾向前的数据符合[关键词],则将符合最短的删除
${变量%%关键词} 如果变量内容从尾向前的数据符合[关键词],则将符合最长的删除
${变量/旧字符串/新字符串} 若变量内容符合[旧字符串]则[第一个旧字符串会被新字符串取代]
${变量//旧字符串/新字符串} 若变量内容符合[旧字符串]则[全部旧字符串会被新字符串取代]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容

  • 一,shell题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工...
    架构师小秘圈阅读 8,724评论 3 70
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,094评论 0 0
  • 基础 头文件 #!/bin/bash 或者#!/bin/sh #!约定的标记,如IOS的Import 执行文件时需...
    ZMJun阅读 1,231评论 1 2
  • 感恩她凌晨3点还在工作还在为我们的工作操心,真的很辛苦,感恩她的用心,为大家服务,为团队服务。 感恩优雅美丽的文子...
    未来金刚研究院阅读 207评论 0 2
  • 1. 相传,中秋节其实也是情人节。 故事从远古时期讲起,那时天上有十个太阳,晒得庄稼枯死,民不聊生,一个名叫后羿的...
    孙小山阅读 3,523评论 22 27