Shell笔记1

作者: yaya_pangdun | 来源:发表于2016-06-06 21:29 被阅读28次

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`

字符串

不知道是什么

变量配置方式 说明
${变量#关键词} 如果变量从头开始数据符合[关键词],则将符合的最短的删除
${变量##关键词} 如果变量从头开始数据符合[关键词],则将符合的最长的删除
${变量%关键词} 如果变量内容从尾向前的数据符合[关键词],则将符合最短的删除
${变量%%关键词} 如果变量内容从尾向前的数据符合[关键词],则将符合最长的删除
${变量/旧字符串/新字符串} 若变量内容符合[旧字符串]则[第一个旧字符串会被新字符串取代]
${变量//旧字符串/新字符串} 若变量内容符合[旧字符串]则[全部旧字符串会被新字符串取代]

相关文章

  • Shell入门笔记

    本笔记参考 Linux探索之旅 1.什么是Shell 2.Shell种类 3.Shell脚本文件 4.Shell变...

  • linux shell脚本攻略笔记

    LINUX SHELL脚本攻略笔记[速查] linux shell脚本攻略笔记

  • Shell笔记1

    Linux 就会依据 /etc/passwd 文件的配置给我们一个 shell 1. 基础 Shell文件以.sh...

  • Shell十三问 学习笔记

    文本处理 Shell脚本编程 Shell 十三问 学习笔记 shell and Carriage 关系 Shell...

  • Linux操作系统命令汇总

    SHELL脚本学习笔记 标签(空格分隔): linux shell脚本 1. 常用命令汇总 alias 设置别名u...

  • shell教程笔记1

    本人博客同步发表,排版更佳 echo、读取输入、多行注释 字符串、数组 计算与比较 变量、脚本入参 printf ...

  • 《Linux Shell脚本攻略》-1小试牛刀(1)

    《Linux Shell脚本攻略》读书笔记1 Shell是系统用户界面,提供用户与内核进行交互操作的一种接口。Sh...

  • Shell脚本

    shell脚本学习笔记 shell命令的组合运用 常用命令组合

  • Shell 学习笔记

    Shell 学习笔记 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是...

  • 1.1 开始

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 Bash (Bourne Again Shell)是目...

网友评论

    本文标题:Shell笔记1

    本文链接:https://www.haomeiwen.com/subject/jwhxrttx.html