shell脚本-1

2023-11-05

0.狂降

  • 变量:1.标识符 2.数据类型
  • 运算符:让多个变量产生关系
  • 逻辑语句:1.顺序 2.分支 3.循环
  • 方法/函数:将实现某一功能的代码封装

1.变量

  • 定义变量时,变量名不加$
  • 基本都当成文本处理
-bash-4.2$ a=10
-bash-4.2$ b=20
-bash-4.2$ echo $a+$b
10+20

 2.shell字符串

  • 单引号:任何字符串都会原样输出,变量无效
  • 双引号:可以有变量以及转义字符
-bash-4.2$ name=haha
-bash-4.2$ echo $name
haha
-bash-4.2$ name2='xixi'
-bash-4.2$ echo $name2
xixi
-bash-4.2$ name3="heihei"
-bash-4.2$ echo $name3
heihei
-bash-4.2$ name4=$name 111
bash: 111: command not found...
-bash-4.2$ name4='$name 111'
-bash-4.2$ echo $name4
$name 111
-bash-4.2$ name5="$name 222"
-bash-4.2$ echo $name5
haha 222
  • #:计算字符串长度(必须是${#字符串名})
-bash-4.2$ echo #$name5

-bash-4.2$ echo #{$name5}

-bash-4.2$ echo ${#name5}
8
  • echo ${字符串名:N:M} 截取字符串N-M位
-bash-4.2$ echo ${name5:3:7}
a 222

 3.shell数组

  • 数组的优点在于可以随机访问,链表的优势在于删减方便
  • bash支持一维数组但不支持多维,没有限定数组的大小
  • 数组定义用(),元素用空格符号分开
  • 读取数组${数组名[下标]}
  • 读取全部数组元素${数组名[@]}
  • 获取数组长度还是用# ${#数组名[@]}
-bash-4.2$ s=(a b c d)
-bash-4.2$ echo ${s[2]}
c
-bash-4.2$ echo ${s[*]}
a b c d
-bash-4.2$ echo ${s[@]}
a b c d
-bash-4.2$ echo ${#s[*]}
4

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell脚本-1 的相关文章

  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 如何使用 git hook pre-merge-commit 获取原始合并分支名称

    我正在尝试使用新的 git hook pre merge commit 创建一个特定的脚本 但它没有参数 有什么解决方法可以让我获得正在合并的分支的名称吗 例子 在分支 myBranch 上 我调用 git merge testingBra
  • 在 bash 中添加(收集)退出代码

    我需要依赖于脚本中的几个单独的执行 并且不想将它们全部捆绑在一个丑陋的 if 语句中 我想使用退出代码 每次执行并添加它 最后 如果这个值超过阈值 我想执行一个命令 伪代码 ALLOWEDERROR 5 run something RESU
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • 检查帐号是否为数字时出现语法错误

    if account nr 0 9 from account nr 0 9 这是为了检查帐号是否为数字 我收到语法错误 这个问题的早期版本缺少之间的空格if and 实际代码具有所需的空间 它显示以下错误消息 syntax error ac
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 如何检查主机是否在您的known_host ssh中

    我的脚本中使用以下命令 将主机添加到 ssh 中的已知主机 VAR2 expect c spawn ssh o StrictHostKeyChecking no REMOTE HOST USER REMOTE HOST IP expect
  • Python 3.6 shell 中可点击的 html 链接?

    比如说 我有一个充满 html 链接的列表 看起来像这样 https www nytimes com 2017 05 19 realestate they can afford to buy but they would rather re
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 如何在shell脚本中给出密码?

    在 shell 脚本文件中 我使用一些命令 例如scp and make install要求我输入密码 我运行一个 shell 脚本来编译一个大项目 一段时间后它会要求我输入密码才能使用scp 我需要等待该过程并在此之后提供密码 我只想通过
  • 如何找到进程启动时使用的原始用户名?

    有一个 perl 脚本需要以 root 身份运行 但我们必须确保运行该脚本的用户最初没有以用户 foo 身份登录 因为它将在脚本运行期间被删除 那么 我如何查明自登录以来可能已多次起诉的用户是否在该链中的任何时间都没有模拟过 foo 我发现
  • 仅当程序成功时如何重定向程序的输出?

    当我的程序之一返回非零退出代码时 我想避免重定向其输出 这可能吗 如果可以 我该怎么做 我失败的尝试 echo foo gt file false cat gt file 这导致file是空的 我想要的行为只是调整file当程序成功时 我还
  • 如何在 grep 中每个文件匹配一次?

    是否有任何 grep 选项可以让我控制匹配总数 但在每个文件的第一个匹配处停止 Example 如果我这样做grep ri include coffee re 我明白了 app coffee express require express
  • Linux Bash - 日期格式

    我的日期格式是 yyyy mm dd hh mm ss 如何检查我的输入 它应该是这样的 bin bash read p Date format yy mm dd HH MM SS input check date Y m d H M S
  • 如何使用 HP-UX shell 脚本将简单的文本文件作为附件发送?

    我需要在 HP UX 中使用 shell 脚本发送一封带有文本文件作为附件的电子邮件 我没有安装mutt 我正在使用以下命令 但它在电子邮件正文中发送文件内容 我希望将其作为附件 mailx s Report email protected
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I

随机推荐

  • 火爆!用GPT接入midjounery绘图

    先看效果图吧 画了一只狗 gpt next web这个项目接入mj绘图 需要登录进入midjounery api网站后 复制一下api token key 3 网上找下GPT Next这个项目 建议电脑 手机有时候不显示图片 按照下方图示
  • 软件质量模型的六大特性和27个子特性

    软件质量模型的六大特性和27个子特性如下 ISO IEC9123软件质量特性 图示 一 功能性 1 适合性 解释软件产品是否提供了相应的功能 2 准确性 软件提供的功能是否正确 用户需要的 即解释软件对不对 3 互操作性 产品与产品之间交互
  • SQL优化(二):根据工具来SQL优化

    前一章节 讲的是explain的使用以及他结果的解析 实际上工具远远不止explain一个 还有慢查询 SHOW PROFILE这些 而且光读工具的说明书也不行 还要实际的根据工具返回的结果找到原因 根据实际情况是物理宿主机配置太低了要升级
  • Netty4详解三:Netty架构设计

    读完这一章 我们基本上可以了解到Netty所有重要的组件 对Netty有一个全面的认识 这对下一步深入学习Netty是十分重要的 而学完这一章 我们其实已经可以用Netty解决一些常规的问题了 一 先纵览一下Netty 看看Netty都有哪
  • 关于linux内核学习的误区以及相关书籍介绍

    第一篇 先说句正经的 其实我没资格写这篇文章 因为自己也就一两个月以来才开始有所领悟的 因此 这里与其说是关于linux内核学习的经验 不如说是自己的教训吧 希望不要扔鸡蛋砸我 常常有人问 我想学习内核 需要什么基础吗 linus torv
  • uni微信小程序,打开地图,跳转第三方

    一 需求 微信小程序 需要点击并跳转第三方地图软件导航 并计算到目标位置距离 二 思路 思路 1 接口返回需要有位置的经纬度 这个自行在后台编辑获取 2 需要获取用户的位置权限 我这边使用的是uniapp 需要使用官方封装两个接口 主要是用
  • 华为OD机试2023 最新最全备考攻略助你轻松上岸

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 什么是华为OD 华为OD是Outsourcing Dispacth模式 是华为和外企德科联合
  • ubuntu系统火狐浏览器上网解决方法

    打开终端 sudo apt get update sudo apt get install firefox
  • VSCode本地代码同步服务器教程(已解决本地同步删除服务器端)

    1 安装插件 SFTP 2 1 在本地新建一个文件夹用来放项目 并且用vscode打开这个文件夹然后进行后续操作 2 2 在VSCode中打开命令栏 快捷键Shift Ctrl P 搜索SFTP 然后选择自己刚才创建的文件夹 3 选择SFT
  • 虚拟机和主机文件共享的四种方法

    第一种方法 使用虚拟机自带的共享功能 1 在vmware里VM gt 设置 gt options选项卡 gt shared folder 添加共享文件 具体如下图所示 2 然后到 mnt hgfs下可以找到共享的文件了 cd mnt hgf
  • 一些计算机词汇的简单解说

    fork zombie unix 中有个系统调用 叫做 fork 这个名字起得很有意思 两个fork 叉子 本来放在一起 跟着左右手各拿起一只 含着一分为二的意思 unix 中 fork 的作用就是创建了一个新的进程 和原来的进程是一模一样
  • java的基础知识-第四十篇-java中 =与==、&与&&、

    与 属于赋值运算符 将右侧的值赋给左侧的变量名称 属于关系运算符 判断左右两边的值是否相等 结果为boolear类型 与 是逻辑与 是短路与 都属于逻辑运算符 都表示并且执行结果都相同 当使用短路与 并且第一个条件为false时 则结果直接
  • linux系统时钟使用utc,linux时钟概念CST与UTC、以及NTP简单设置

    1 世界协调时间 Universal Time Coordinated UTC GPS 系统中有两种时间区分 一为UTC 另一为LT 地方时 两者的区别为时区不同 UTC就是0时区的时间 地方时为本地时间 如北京为早上八点 东八区 UTC时
  • 【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结

    1 源表结构 order id class count 111101100002 3 0 111101100012 1 3 11110112002 1 2 111101100202 2 0 2 目标表结构 根据order id分组 根据不同
  • ubuntu执行编译命令提示"No such file or directory"

    uname a 查看系统是32位或64位 若是64位可能没有安装32位库 安装32位lib库 sudo apt get install nautilus open terminal bison zlib1g dev doxygen libx
  • 找不到vcruntime140.dll,无法继续执行代码?多种解决方法解析

    找不到vcruntime140 dll 无法继续执行代码 当你在尝试运行某个程序时 突然弹出一条错误提示框 告诉你无法继续执行代码 因为找不到vcruntime140 dll 这个问题很常见 但是它可能会让你感到困惑和疑惑 这篇文章将详细介
  • C# 定时器轮询 设计思路

    C 定时器设计过程的记录 在Windows 系统上 C 常用定时器有三种 而最高进度的定时器误差 58ms 则个误差数字无法应用 16ms 级别的定时轮询 但还有另外的高精度定时器 这不是还有其他方法吗 对有的 空转也指的是直接让线程一只空
  • 设计模式之中介者模式

    介绍 在现实生活中 常常会出现好多对象之间存在复杂的交互关系 这种交互关系常常是 网状结构 它要求每个对象都必须知道它需要交互的对象 例如 每个人必须记住他 她 所有朋友的电话 而且 朋友中如果有人的电话修改了 他 她 必须让其他所有的朋友
  • html textarea文本域高度自适应

    1 可直接在 菜鸟教程网站测试页面中测试
  • shell脚本-1

    0 狂降 变量 1 标识符 2 数据类型 运算符 让多个变量产生关系 逻辑语句 1 顺序 2 分支 3 循环 方法 函数 将实现某一功能的代码封装 1 变量 定义变量时 变量名不加 基本都当成文本处理 bash 4 2 a 10 bash