Shell笔记--Shell使用系统变量、自定义变量、特殊变量和运算符

2023-11-06

目录

1--Shell使用系统变量

2--Shell使用自定义变量

3--特殊变量

3-1--$n

3-2--$#

3-3--$* 和 $@

3-4--$?

4--运算符


1--Shell使用系统变量

        常用的系统变量有:$HOME, $PWD, $SHELL, $USER 等;

echo $HOME

echo $PWD 

echo $SHELL

echo $USER

2--Shell使用自定义变量

        通过 = 来定义变量,可通过 unset 来撤销变量;readonly 可用于声明静态变量,其不能用 unset 来撤销;

        变量名称可以由字母、数字和下划线组成,但不能以数字开头;环境变量建议全部使用大写;

        定义变量时,= 号两侧不能有空格;

        在 bash 中,变量默认类型是字符串类型,因此无法直接进行数值运算;

        变量如果含有空格,需要使用双引号或单引号括起来;

        实操演示:

A=1

echo $A

unset A

readonly B=2

echo $B

unset B

         通过 export 可将变量设置为全局环境变量,从而可供其它 Shell 程序使用;

DESKTOP=/Users/liujinfu/Desktop 

echo $DESKTOP

export DESKTOP

3--特殊变量

3-1--$n

        n 表示数字,$0 代表脚本名称,$1-$9表示第1到第9个参数,10以上的参数需要用大括号包括,如${10};

#!/bin/bash

echo "$0 $1 $2"

3-2--$#

        $# 用于获取所有输入参数的个数,其常在循环中使用;

#!/bin/bash

echo "$0 $1 $2"

echo $#

3-3--$* 和 $@

 $* 代表命令行中所有的参数,其将所有的参数看成一个整体;

$@ 代表命令行中所有的参数,其将每个参数区别对待;

#!/bin/bash

echo "$0 $1 $2"

echo $#

for var in "$*"
do
    echo "$var"
done

for var in "$@"
do
    echo "$var"
done

3-4--$?

$? 返回最后一次执行命令的状态;如果上一个命令正确执行,返回0;

echo $HOME

echo $?

4--运算符

基本语法:$((运算式)) 或 $[运算式]

常用操作符:

        ① 加法:expr +

        ② 减法:expr -

        ③ 乘法:expr \*

        ④ 除法:expr /

        ⑤ 取余:expr %

        注意:运算符左右需有空格隔开:

        ​​​​​​​实例测试:两种方式实现计算 (2+3)*4的结果:

expr `expr 2 + 3` \* 4

s=$[(2+3)*4]

echo $s

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

Shell笔记--Shell使用系统变量、自定义变量、特殊变量和运算符 的相关文章

  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 如何在bash中仅提取两个字符串之间多行的第一个实例?

    我的文件是 abc 123 xyz abc 675 xyz 我想提取 abc 123 xyz 123 可以是任何东西 重点是我想要第一次出现 我尝试使用这个 sed n abc xyz p filename 但这给了我所有的例子 我怎样才能
  • Windows、Emacs、Git Bash 和 shell 命令

    Windows 7 Emacs 24 3 1 git 1 8 1 msysgit 1 我的等效 emacs 文件中有以下内容 if equal system type windows nt progn setq explicit shell
  • 为什么减法返回 - 符号

    我对简单的减法有疑问 但我不明白出了什么问题 我的代码 start date s N cut b1 13 Treatment end date s N cut b1 13 delta expr end start echo delta de
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • 如何将命令作为参数传递给 ssh [重复]

    这个问题在这里已经有答案了 我的需要是让这个命令起作用 sshpass p XXXX ssh oStrictHostKeyChecking no email protected cdn cgi l email protection sudo
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • 在 Fish Shell 中设置导出

    我安装了多个版本的 PHP 对于我的正常开发 我总是使用通过自制程序安装的 PHP 5 5 x 在鱼壳里 which php php version gt usr local bin php gt PHP 5 5 8 cli built J
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 在 bash 中使用单个命令为 shell 变量分配默认值

    我对 bash 3 00 shell 脚本中的变量进行了大量测试 如果未设置变量 则它会分配默认值 例如 if z VARIABLE then FOO default else FOO VARIABLE fi 我似乎记得有一些语法可以在一行
  • Mongodb shell mongo:通常只允许每个套接字地址(协议/网络地址/端口)使用一次。对于套接字:0.0.0.0:27017

    前两天还好好的 现在mongod不起作用 甚至echo ps A grep mongo没有打印任何内容 但它警告错误 每个套接字地址只有一种用途 怎么杀掉它 我也尝试过不同的随机端口 他们怎么可能也失败呢 D mongodb win32 x
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su

随机推荐

  • Python Pandas 图形绘制(一):折线图,柱状图

    Pandas 图形绘制 一 折线图 柱状图 一 折线图 Line Chart 1 1 默认绘制折线图 df plot 1 2 绘制多条折线 二 柱状图 Bar Chart 2 1 垂直柱状图 df plot bar 2 2 叠加柱状图 st
  • 安全测试-优秀测试工程师必备的4项安全测试方法!

    用您5分钟时间阅读完 希望能对您有帮助 一 安全性测试 1 安全性测试方法 测试手段可以进行安全性测试 目前主要安全测试方法有 1 静态的代码安全测试 主要通过对源代码进行安全扫描 根据程序中数据流 控制流 语义等信息与其特有软件安全规则库
  • Couldn‘tparse bundle asset‘“D: \vue\cy_ gw2\dist\js \chunk- vendors.js1Analyzerwi 11usemodule

    报错信息 Couldn tparse bundle asset D vue cy gw2 dist js chunk vendors js1Analyzerwi 11usemodule 报错截图 报错原因 未安装less和less load
  • 从React源码来学hooks是不是更香呢

    本文将讲解 hooks 的执行过程以及常用的 hooks 的源码 hooks 相关数据结构 要理解 hooks 的执行过程 首先想要大家对 hooks 相关的数据结构有所了解 便于后面大家顺畅地阅读代码 Hook 每一个 hooks 方法都
  • 2D平面上的二连杆机器臂反向运动模拟(matlab代码示例)

    2D平面上的二连杆机器臂反向运动模拟 matlab上先下载 robotics system toolbox工具箱 robot rigidBodyTree DataFormat column MaxNumBodies 3 L1 1 the l
  • opencv+python物体检测【03-模仿学习】

    仿照练习 原文链接 步骤一 准备图片 正样本集 正样本集为包含 识别物体 的灰度图 一般大于等于2000张 尺寸不能太大 尺寸太大会导致训练时间过长 负样本集 负样本集为不含 识别物体 的任何图片 一般大于等于5000张 尺寸比正样本集稍大
  • Egg 使用 Sequelize

    npm install save egg sequelize mysql2 在 config plugin js 中引入 egg sequelize 插件 exports sequelize enable true package egg
  • 人工智能与教育融合的文献总结

    一般来说 人工智能与教育融合 首先要重塑教育理念 这是实现 教育 人工智能 的前提 格物斯坦提示 越是科技发达 越需要人性的支撑 教育的本质也是一种能力 生命和智能反映的是个体能力 这是亘古不变的科学原理 人工智能的观点来源于人们对于人工计
  • 数字型字符串千分位加逗号

    在数字型字符串千分位加逗号 param str return public static String addComma String str boolean neg false if str startsWith 处理负数 str str
  • 回调函数(入门篇)

    首先 我们回忆一下 标准库函数printf是如何被我们调用的 1 包含库函数所在的头文件 include
  • Linux sed 利剑之探索

    sed Linux sed命令是利用script来处理文本文件 sed可依照script的指令 来处理 编辑文本文件 Sed主要用来自动编辑一个或多个文件 简化对文件的反复操作 编写转换程序等 语法 sed hnV e
  • Linux防火墙开关命令

    关闭防火墙 systemctl stop firewalld service 停止firewall systemctl disable firewalld service 禁止firewall开机启动 开启端口 firewall cmd z
  • LeetCode算法题 :第三大的数thirdMax

    给定一个非空数组 返回此数组中第三大的数 如果不存在 则返回数组中最大的数 要求算法时间复杂度必须是O n 示例 1 输入 3 2 1 输出 1 解释 第三大的数是 1 示例 2 输入 1 2 输出 2 解释 第三大的数不存在 所以返回最大
  • 区块链笔记4--BTC实现

    1 UTXO 区块链是一个去中心化的账本 比特币采用了 基于交易的账本模式 然而 系统中并无显示记录账户包含BTC数 实际上其需要通过交易记录进行推算 在比特币系统中 全节点需要维护一个名为 UTXO UnspentTransaction
  • Android技术功底不够如何去面试,已整理成文档

    IT行业的前景 近几年来 大数据 人工智能AI 物联网等一些技术不断发展 也让人们看到了IT行业的繁荣与良好的前景 越来越多的高校学府加大了对计算机的投入 设立相应的热门专业来吸引招生 当然也有越来越多的人选择从事这个行业 希望能从这个行业
  • 线性回归介绍及分别使用最小二乘法和梯度下降法对线性回归C++实现

    回归 在这类任务中 计算机程序需要对给定输入预测数值 为了解决这个任务 学习算法需要输出函数f Rn R 除了返回结果的形式不一样外 这类问题和分类问题是很像的 这类任务的一个示例是预测投保人的索赔金额 用于设置保险费 或者预测证券未来的价
  • 进入U盘PE系统无法识别硬盘分区的原因分析和解决方法

    进入U盘PE系统无法识别硬盘分区的原因分析和解决方法 时间 2015 07 15 来源 http www xitongtiandi com 复制网址 进入U盘PE系统无法识别硬盘分区的原因分析和解决方法分享给大家 PE Windows PE
  • Sqli-labs靶场详细攻略Less 23-28a

    Less 23 28a Less 23 GET Error based strip comments 这一关还是使用get方法进行注入 不过这次对 这些用于注释的字符做了过滤 这样我们可以使用两个 进行绕过 第一个 用于闭合原代码语句中的前
  • 【建议收藏】11+实战技巧,让你轻松从Vue过渡到React

    前言 在这个卷神辈出的时代 只是熟练Vue的胖头鱼 已经被毒打过多次了 面试中曾被质疑 你居然不会React 我无语凝噎 不知说啥是好 这篇文章尝试将Vue中一些常见的功能在React中实现一遍 如果你恰巧是Vue转React 或者Reac
  • Shell笔记--Shell使用系统变量、自定义变量、特殊变量和运算符

    目录 1 Shell使用系统变量 2 Shell使用自定义变量 3 特殊变量 3 1 n 3 2 3 3 和 3 4 4 运算符 1 Shell使用系统变量 常用的系统变量有 HOME PWD SHELL USER 等 echo HOME