前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux复习资料——一篇文章学会sh脚本的编写

Linux复习资料——一篇文章学会sh脚本的编写

作者头像
红目香薰
发布2022-11-29 21:01:54
3K0
发布2022-11-29 21:01:54
举报
文章被收录于专栏:CSDNToQQCode

目录

Shell脚本官方说明

shell 编程注意事项

你的第一个脚本程序:

是否内嵌命令

识别内嵌shell命令

运行【.sh】的三种方法

1、【./】

2、【作为解释器参数来运行shell脚本】

3、【使用 source 命令执行】

创建变量

遍历多个值

数组

输出数组信息

获取数组长度

范围查询

传递参数

运算符

流程控制语句(后续请使用vim编辑器,否则容易出现【未预期的文件结尾】的问题)

分支语句

循环语句

for循环

while循环

until 循环

case语句

循环控制语句

函数

Shell脚本官方说明

Shell 通过提示您输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出,简单来说Shell就是一个用户跟操作系统之间的一个命令解释器。

shell 编程注意事项

Shell脚本名称命名一般为英文、大写、小写,后缀以.sh 结尾

shell 脚本 变量不能以数字、特殊符号开头,不能使用特殊符号,可以用【_】下划线,不能使用关键字。

你的第一个脚本程序:

如果对输入过程不太了解,就直接复制粘贴。

代码语言:javascript
复制
cd /root/
echo "echo HelloWorld">test.sh
chmod 777 test.sh
./test.sh

效果如下图:

是否内嵌命令

通过type可以查看咱们平时使用的命令是否是【shell】内嵌命令,如果是代表执行效率就高。

代码语言:javascript
复制
type cd
type echo
type ps
type ll
type crond

识别内嵌shell命令

代码语言:javascript
复制
#!/bin/sh

Shell 脚本的第一行要写 #!/bin/sh,它指明了脚本中命令的解释器,否则在直接运行脚本时,将不能识别内嵌命令。 

运行【.sh】的三种方法

1、【./】

在执行脚本时一定要写成 ./test.sh,而不是 test.sh,运行其他二进制的程序也一样,直接写 test.sh,Linux 系统会去PATH 里寻找有没有叫 test.sh 的,PATH 里只有 /bin、/sbin、/usr/bin 和 /usr/sbin 等,当前目录通常不在 PATH 里,所以写成 test.sh 会找不到命令,要用 ./test.sh 告诉系统就在当前目录中找。

2、【作为解释器参数来运行shell脚本】

3、【使用 source 命令执行】

创建变量

代码语言:javascript
复制
x=666
y=777
expr $x "+" $y

遍历多个值

与加强for'循环差不多。【do】开始【done】结束。

代码语言:javascript
复制
for info in 王先生 龙姑娘 李少爷 张小姐
do
echo "欢迎 ${info} 光临"
done

 花括号代表变量作用域,如果是连续字符建议使用,不是连续字符用不用都行

代码语言:javascript
复制
for info in 王先生 龙姑娘 李少爷 张小姐
do
echo "欢迎 $info 光临"
done

数组

数组操作就一定要加上作用域【{}】,使用方法与传统语法类似,下标都是从【0】开始

代码语言:javascript
复制
array=("王语嫣" "赵灵儿" "小龙女" "赵敏" "敏敏特穆尔")
echo ${array[0]}
echo ${array[1]}

输出数组信息

代码语言:javascript
复制
echo ${array[@]}

获取数组长度

代码语言:javascript
复制
echo ${#array[@]}

 如果加上描述,建议用上双引号,与显示信息不同,这里有一个【#】符号

代码语言:javascript
复制
echo "数组长度:"${#array[@]}

范围查询

代码语言:javascript
复制
echo ${array[@]:2:4}

传递参数

编辑测试脚本

代码语言:javascript
复制
cd /root/
vi test.sh

输入以下编码: 

代码语言:javascript
复制
#!/bin/sh
echo "Shell 在执行过程中传值:"
echo " 执行人:$1"
echo " 第 1 个参数为:$2"
echo " 第 2 个参数为:$3"
echo " 第 3 个参数为:$4"

读取变量是从【0】开始,但是由于第一个命令要执行【./脚本】,故而从【1】进行获取

运算符

运算符

说明

举例

!

非运算,表达式为 true,则返回 false,否则返回 true

[ ! false ] 返回 true

-o

或运算,有一个表达式为 true,则返回 true

[ $a  -lt  20  -o  $b  -gt  100  ] 返回 true

-a

与运算,两个表达式都为 true,才返回 true

[ $a  -lt  20  -a  $b  -gt  100  ] 返回 false

运算符

说明

举例

&&

逻辑的 AND

[[ $a -lt 100 && $b -gt 100 ]] 返回 false

||

逻辑的 OR

[[ $a -lt 100 || $b -gt 100 ]] 返回 true

运算符

说明

举例

-eq

检测两个数是否相等,相等返回 true

[ $a -eq $b ] 返回 false

-ne

检测两个数是否不相等,不相等返回 true

[ $a -ne $b ] 返回 true

-gt

检测左边的数是否大于右边的,如果是,则返回 true

[ $a -gt $b ] 返回 false

-lt

检测左边的数是否小于右边的,如果是,则返回 true

[ $a -lt $b ] 返回 true

-ge

检测左边的数是否大于等于右边的,如果是,则返回true

[ $a -ge $b ] 返回 false

-le

检测左边的数是否小于等于右边的,如果是,则返回true

[ $a -le $b ] 返回 true

运算符

说明

举例

=

检测两个字符串是否相等,相等返回 true

[ $a = $b ] 返回 false

!=

检测两个字符串是否相等,不相等返回 true

[ $a != $b ] 返回 true

-z

检测字符串长度是否为 0,为 0 返回 true

[ -z $a ] 返回 false

-n

检测字符串长度是否为 0,不为 0 返回 true

[ -n "$a" ] 返回 true

str

检测字符串是否为空,不为空返回 true

[ $a ] 返回 true

流程控制语句(后续请使用vim编辑器,否则容易出现【未预期的文件结尾】的问题)

分支语句

关键字:if、elif、else、fi。

再次编辑【test.sh】文件

代码语言:javascript
复制
vim test.sh
代码语言:javascript
复制
#!/bin/sh
a=10
b=20
if [ $a == $b ]; then echo "a 等于 b"
elif [ $a -gt $b ]; then echo "a 大于 b"
elif [ $a -lt $b ]; then echo "a 小于 b"
else echo " 没有符合的条件 "
fi

循环语句

for循环

代码语言:javascript
复制
#!/bin/sh
for((i=1;i<=10;i++));
do
echo $(expr $i "*" $i "+" 1);
done

while循环

这里let表示后面"i++"的自增,不用【$】

代码语言:javascript
复制
#!/bin/bash
i=1
while(( $i<=5 ))
do
echo $i
let "i++"
done

until 循环

until 循环执行一系列命令条件为false继续,直至条件为 true 时停止。

代码语言:javascript
复制
#!/bin/sh
a=0
until [ ! ${a} -lt 10 ]
do
echo ${a}
let "a++"
done

case语句

代码语言:javascript
复制
echo ' 输入 1 到 4 之间的数字 ,你输入的数字为 :'
read Num
case $Num in
1) echo ' 你选择了 1' ;;
2) echo ' 你选择了 2' ;;
3) echo ' 你选择了 3' ;;
4) echo ' 你选择了 4' ;;
*) echo ' 你没有输入 1 到 4 之间的数字 ' ;;
esac

循环控制语句

continue代表停止当前循环,进入下次循环。 break代表终止循环。

函数

函数语法如下:

代码语言:javascript
复制
[ function ] funname [()]
{
action;
  [return int;]
}
代码语言:javascript
复制
demoFun(){
echo " 这是我的第一个 Shell 函数 !"
}
echo "----- 函数开始执行 -----"
demoFun
echo "----- 函数执行完毕 -----"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Shell脚本官方说明
  • shell 编程注意事项
  • 你的第一个脚本程序:
  • 是否内嵌命令
  • 识别内嵌shell命令
  • 运行【.sh】的三种方法
  • 1、【./】
  • 2、【作为解释器参数来运行shell脚本】
  • 3、【使用 source 命令执行】
  • 创建变量
  • 遍历多个值
  • 数组
    • 输出数组信息
      • 获取数组长度
        • 范围查询
        • 传递参数
        • 运算符
        • 流程控制语句(后续请使用vim编辑器,否则容易出现【未预期的文件结尾】的问题)
        • 分支语句
        • 循环语句
          • for循环
            • while循环
              • until 循环
                • case语句
                  • 循环控制语句
                  • 函数
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档