Shell中变量的作用域:
  • 在当前Shell会话中使用,全局变量。
  • 在函数内部使用,局部变量。
  • 可以在其他Shell会话中使用,环境变量。
局部变量:
默认情况下函数内的变量也是全局变量
#!/bin/bash
function func() {
a=99
}
func
echo $a

输出
>> 99
为了让全局变量变成局部变量
#!/bin/bash
function func() {
local a=99
}
func
echo $a

输出为空,说明此时变量a是局部变量
环境变量:
在父Shell中定义的变量,在子Shell中可以调用。

Shell位置参数
1) 给脚本传递位置参数
在运行shell脚本的时候可以带入一些位置参数,在脚本中$n来接收参数的值。如下:
#!/bin/bash
echo "language: $1"
echo "username: $2"

运行:
>> bash filename.sh Chinese mocun
输出:
>> language: Chinese
>> username: mocun
2) 给函数传递位置参数
#!/bin/bash
function func() {
echo "language: $1"
echo "username: $2"
}
func c++ mocun

这时就不能在运行的时候通过命令传入了,直接在脚本中调用函数的同时给参数就行。
输出:
>> language: c++
>> username: mocun
如果参数过多,超过10个了,那么就需要用${n}来接收,帮助解释器明确参数的边界,如:${11}

特殊变量
变量
含义
$0
当前脚本的文件名
$#
传递给脚本或者函数的参数个数
$*
传递给脚本或者函数的所有参数
$@
传递给脚本或者函数的所有参数。当被双引号包含时,与上述$*有所不同。
$?
上个命令的退出状态
$$
当前Shell的进程ID。对于Shell脚本,就是这些脚本所在的进程ID。
示例,文件名为test.sh:
#!/bin/bash
echo "Process ID: $$"
echo "File Name: $0"
echo "First Parameter: $1"
echo "Second Parameter: $2"
echo "All Parameters 1: $@"
echo "All Parameters 2: $*"
echo "Total: $#"

运行命令:

>> bash test.sh yinzm mocun
输出

Process ID: 39817

File Name: seventh.sh

First Parameter: yinzm

Second Parameter: mocun

All Parameters 1: yinzm mocun

All Parameters 2: yinzm mocun

Total: 2

$*与$@的区别
简单说,当两个参数没有被双引号包含时是一模一样的效果,都是接收若干个独立的参数。但是当被双引号包含时,$*会将得到的所有参数拼在一起,但是$@仍然是若干个独立的参数。
示例,文件名filename.sh:
#!/bin/bash
echo "print each param from \"\$*\""
for var in "$*"
do
echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done

运行:
>> bash filename.sh a b c
输出:

print each param from "$*"

a b c

print each param from "$@"

a

b

c

$?的作用
1.获取上一个命令的退出状态
2.获取函数的返回值

转载于:https://www.cnblogs.com/yinzm/p/10325056.html

Shell基础知识(三)相关推荐

  1. Linux之(5)账户和shell基础知识

    Linux之(5)账户和shell基础知识 Author:onceday date:2022年8月23日 漫漫长路,而今才刚刚开始- 本内容主要收集整理于: <Linux命令行与shell脚本编 ...

  2. (六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】

    JS基础知识三(作用域和闭包) 提问 作用域 自由变量 闭包 this 提问 this的不同应用场景,如何取值 手写bind函数 实际开发中闭包的应用场景,举例说明 创建10个a标签,点击的时候弹出对 ...

  3. 【图文教程】Shell基础知识

    Shell基础知识 1. shell介绍 2. history命令 history主要参数示例: 3. 命令补全和别名 4. 通配符 5. 输入输出重定向 6. 管道符和作业控制 管道符: 作业控制: ...

  4. 3000字扫盲shell基础知识(新手必备)

    目录 shell基础语法之变量 shell 变量命名 shell 变量调用 shell 变量分类 shell 运算符 运算符种类 关系运算符 布尔运算符 字符串运算符 逻辑运算符 文件测试运算符 sh ...

  5. CSS基础知识---三种选择器

    CSS基础知识---三种选择器 选择器 标签选择器 id选择器 class选择器 全部代码 选择器 标签选择器 id选择器 class选择器 标签选择器 选择器优先级:id>class>标 ...

  6. shell基础知识总结

    1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...

  7. C# 基础知识 (三).主子对话框数值传递

    在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗 ...

  8. 三校生计算机word基础知识,三校生计算机第一次月考计算机基础、word.doc

    三校生计算机第一次月考计算机基础.word 云南省高等职业技术教育招生考试试题 计算机基础.word基础知识(9月考试卷) 姓名:_ __ ____ 得分:____ ___ 一.单项选择题(在每小题给 ...

  9. Shell 基础知识--细说linux配套视频

    Shell 基础概括 Shell是什么? shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序 ...

  10. C语言基础知识(三)-程序设计结构、数组、字符串处理函数

    本文是C语言的基础知识,主要讲解三种程序设计结构.数组.字符串和字符数组.数组元素查询以及字符串处理函数. 程序结构设计 包括C语言在内的几乎任何编程语言都支持以下三种程序设计结构,它们分别是: 顺序 ...

最新文章

  1. Qt字符编码,创建中文文件
  2. 失败 安装scikit_scikit-learn0.22版本最新发布
  3. HBase基本概念和hbase shell常用命令用法
  4. oracle11g迁移到12cpdb,12c跨平台完成PDB的备份迁移
  5. 初创科技公司都采用什么样的技术架构?
  6. Leetcode: Palindrome Partition I II
  7. AI算法连载20:统计之隐马尔可夫模型
  8. Oracle应用迁移到AnalyticDB for PostgreSQL指导
  9. PyQt5笔记(06) -- 菜单
  10. keil 生成bin找不到afx文件_【学习笔记】Keil不能正确生成.bin文件的解决办法
  11. kaggle数据挖掘竞赛Home Credit Default Risk讲解
  12. Docker生产环境配置——设置direct-lvm模式
  13. 标准C++ 与 VC++ 区别集锦(待续)
  14. 固态硬盘 游戏测试软件,TxBENCH(SSD固态硬盘检测工具)
  15. 嵌入式系统课程大作业设计报告
  16. 64位Ubuntu14.04系统无法解压bin文件的解决方法
  17. txt 文本文档中空格替换
  18. 【重识云原生】第六章容器基础6.4.10.1节——StatefulSet概述
  19. Jmeter:java.net.URISyntaxException: Illegal character in fragment at index XX问题解决方法
  20. 免费的高匿名爬虫代理池不求人|高可用、高匿名、代理池详解及搭建推荐

热门文章

  1. 还在自建代码仓库?阿里云的这款企业级代码管理工具免费、还香!
  2. 共享快递柜业务场景实战(服务构建)
  3. 架构师成长之路:如何提升技术掌控力?
  4. 如何解决大规模机器学习的三大痛点?
  5. 资深美术分享:游戏开发如何确定画风?
  6. 《动物森友会》的社交分级,在虚拟世界设计舒适的社交氛围
  7. Nature 机器智能综述:AI如何自动生成游戏
  8. docker概念很乱?俺来替你理一下!
  9. PHP在Windows环境下获取GMT时间
  10. mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。