前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux笔记(8)| Shell脚本编程

Linux笔记(8)| Shell脚本编程

作者头像
飞哥
发布2020-07-10 10:30:03
9063
发布2020-07-10 10:30:03
举报

今天分享的是Shell脚本编程的一些语法规则。

1、shell 命令分为内置命令和外部命令,通过type来判断

如:type cd type pwd type ifconfig

2、第一个shell脚本(编辑、保存、增加可执行权限、运行)

格式:

#!/bin/bash 指定shell脚本解释器

echo "hello,world" #具体命令

改权限:sudo chmod 777 hello.sh #最高权限

sudo chmod u+x hello.sh

3、shell的启动方式

(1)当做程序执行:./hello.sh

(2)指定解释器运行 /bin/bash hello.sh

(3)source source hello.sh

(4). . hello.sh

4、定义变量

variable=value 等号前后都不能有空格或者TAB

variable='value'

variable="value"

#! /bin/bash

var=1234

var2='123 456'

var3="123 456"

var4="${var3}aaa"

var5='${var3}aaa'

echo "$var"

echo "$var4"

echo "$var5"

单引号与双引号的区别是引用变量的时候会不会解析,

单引号原封不动的,双引号会解析。

5、将命令的结果赋值给变量

variable=`command`

variable=$(command)

#! /bin/bash

var=`pwd`

var2=$(pwd)

echo "$var"

echo "$var2"

6、删除变量

unset var

7、特殊变量

$0:当前脚本的文件名

$n(n>=1):传递给脚本或函数的参数,n是一个数字,表示第几个参数

例如第一个参数是1,第二个参数是2。

$#:传递给脚本或函数的参数个数

$*:传递给脚本或函数的所有参数

@:传递给脚本或函数的所有参数,当被双引号""包含时,

$?:上个命令的退出状态或者获取函数的返回值

$$:当前shell进程ID,对于Shell脚本,就是这些脚本所在进程的ID

8、字符串的拼接

var=$(pwd)aaa 并排放,直接加在后面

9、读取从键盘输入的数据

read a

read -p "提示信息" a

10、退出当前进程

exit

11、对整数进行数学运算,两个小括号

(())

例:

read -p "input a" a

read -p "input b" b

var=$((a+b))

echo "${var}"

12、逻辑与或 && ||

command1 && command2 当command1为假时才执行command2

command1 || command2 当command1为真时才执行command2

13、检测某个条件是否成立

test expression 和 [expression]

例:

read -p "input a" a

read -p "input b" b

test a -eq b || echo "a!=b"

或者:

[ a -eq b ] || echo "a!=b"

-eq:判断数值是否相等

-ne:判断数值是否不相等

-gt:判断数值是否大于

-lt:判断数值是否小于

-ge:判断数值是否大于等于

-le:判断数值是否小于等于

-z str:判断字符串str是否为空

-n str:判断字符串str是否为非空

=和==:判断字符串str是否相等

-d filename:判断文件是否存在,并且是否command1为目录文件

-f filename:判断文件是否存在,并且是否为普通文件

14、管道

command1 | command2

command1的输出会作为command2的输入,前提是command1执行正确

15、

(1)if 语句

if condition

then

statement

fi

(2)if else 语句

if condition1

then

statement

elif condition2

then

statement

...

else

statement

fi

(3)case in 语句

case expression in

pattern1)

statement

;;

pattern2)

statement

;;

...

*)

statement

esac

16、for in 循环

for variable in value_list

do

statement

done

value_list:

直接给出具体数值:for n in 1 2 3 4 5

给出一个取值范围:for n in {1..10}

使用命令的执行结果:for n in $(ls /bin/*sh)

使用Shell通配符:for n in $(ls /bin/*sh)

使用特殊变量:

for n in $*

for n in $@

for n in "$*"

for n in "$@"

17、while 循环

while condition

do

statement

done

例:

n=0

while (( n < 10))

do

echo "${n}"

n=$((n+1))

done

18、函数

function name()

{

statement

[return value]

}

例:

function my_name() #定义函数

{

echo "feige"

}

my_name #调用函数

19、环境变量

全部用户、全部进程共享的变量:/etc/bash.bashrc

一个用户、全部进程共享的变量:~/.bashrc

Shell启动方式对变量的影响

(1)子Shell进程中执行 /bin/bash 和 ./

(2)当前进程中执行 source 和 .

它们的区别是当使用unset 删除了变量之后,使用方式二执行脚本,还可以使用变量,但是使用方式一执行脚本,就不能再使用那个变量了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子技术研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档