shell的变量

定义变量的单双引号的不同

(1)单引号: 不能识别特殊符号

在这里插入图片描述
(2双引号: 能识别特殊符号
在这里插入图片描述

输出变量

在这里插入图片描述

父子shell

在这里插入图片描述
环境变量(全局)可以在父shell里写,子shell里面执行
在这里插入图片描述
每次用bash执行shell文件时,会开启shell,不会影响当前环境的变量

在这里插入图片描述
每次用source执行shell文件时,就不开启shell,会影响当前环境的变量
在这里插入图片描述

shell子串

BASH

  1. history命令:

​ –c 表示清除历史

​ -r 表示恢复历史

  1. !历史id

​ 表示快速执行这个代码
在这里插入图片描述
3 . !!

​ 表示执行一次命令

4 . 内置命令

(1)echo

-n 不换行输出
在这里插入图片描述
不同用户输出的效果不一样

n 换行
在这里插入图片描述
b 退格

(2)printf
在这里插入图片描述
(3)eval

用于执行多个命令
在这里插入图片描述
不要也行
在这里插入图片描述
(4)exec

执行命令之后,自动退出当前shell环境(退出用户)
在这里插入图片描述

shell子串的用法

shell

1.$#变量 , 用于输出变量长度
在这里插入图片描述

2.${变量:n} 从数字后面输出
在这里插入图片描述

3 . ${变量:n:长度} 用于截取字符串
在这里插入图片描述

4 . 删除

是*前面必须是刚开头的那个数字或字母

${变量#xxx} 从前向后 , 删变量里面最短的那个xxx
在这里插入图片描述
${变量##xxx} 从前向后 , 删变量里面最长的那个xxx
在这里插入图片描述
是*后面必须是结尾的那个数字字母

${变量%xxx} 从后向前 , 删变量里面的那个xxx
在这里插入图片描述
${变量%%xxx} 从后向前 , 删变量里面的那个xxx
在这里插入图片描述

5 . 替换字符串
${变量/旧/新} 用于替换一个遇到的
在这里插入图片描述

${变量//旧/新} 用于替换所有遇到的
在这里插入图片描述

统计变量长度

1 . cat 2.sh | wc -L
在这里插入图片描述

2 . expr 用于数值计算
在这里插入图片描述

3 . echo $#变量 最好
在这里插入图片描述

输出程序运行时间

用$#变量 , 来返回长度 (结果它快一点)

#!/bin/bash
for n in {1..4000}
do 
   char=`seq -s "*" 5`
   echo $#char &>/dev/null
done

在这里插入图片描述
expr length 来返回长度

#!/bin/bash
for n in {1..4000}
do 
   char=`seq -s "*" 5`
   echo expr length "$char" &>/dev/null
done

在这里插入图片描述

结论:

一般就用内置函数,命令,速度是最快的

shell扩展变量

用于处理变量值的

基本上用于变量为空

1.${变量:-word}

没值返回word,有值返回值

变量为空就返回word , 不空就正常返回
在这里插入图片描述

2.${变量:=word}

没值返回word,有值返回值

变量为空就赋值,不空就输出原来的值
在这里插入图片描述

3.${变量:?word}

没值返回word,有值返回值

用于提示变量是不是为空
在这里插入图片描述

4.${变量:+word}

没值不返回,有值返回word
在这里插入图片描述

创建子shell(进程列表)

把命令写在括号
在这里插入图片描述

查看是否开启子shell在运行

echo $BASH_ SUBSHELL 返回0就是没有开启

一个()就是进入一个子shell , 用于提高程并发执行

(ll;echo $BASH_ SUBSHELL) 返回1

(ll;(pwd;echo $BASH_ SUBSHELL)) 返回2

(ll;(pwd;(echo $BASH_ SUBSHELL))) 返回3

内置命令,外置命令

type看是外还是内
在这里插入图片描述
外置 : 慢 , 一定会开启子shell

内置 : 系统启动就执行了 , 用compgen –b (或enable)查看哪些内置

shell编程总结

1 . {}用于返回变量 , ()和“用于运行命令 ,

echo ${date} 不返回值

echo $(date) 返回时间
在这里插入图片描述

原文地址:https://blog.csdn.net/dyjkl/article/details/128436168

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_12353.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注