一:文件参数变量

1、在执行shell脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。特殊的,$0是文件名(包含路径)

#! /bin/bash

echo "文件名:"$0
echo "第一个参数:"$1
echo "第二个参数:"$2
echo "第三个参数:"$3
echo "第四个参数:"$4

执行:

acs@9e0ebfcd82d7:~$ chmod +x test.sh
acs@9e0ebfcd82d7:~$ ./test.sh 1 2 3 4
文件名:./test.sh
第一个参数:1
第二个参数:2
第三个参数:3
第四个参数:4

2、其他参数的相关变量:

$#:文件传入的参数个数

$*:所有参数构成的空格隔开的字符串,如上例中值为 "$1 $2 $3 $4"

$@:每个参数分别用双引号括起来的字符串,如上例中值为"$1" "$2" "$3" "$4"

$$:脚本当前运行的进程ID

$?:上一条命令的退出状态(注意不是stdout,而是exit code)。0表示正常退出,其他值表示错误

$(command):返回command这条命令的stdout(可嵌套)

`command`:返回command这条命令的stdout(不可嵌套)

二:数组

1、数组中可以存放多个不同类型的值,只支持一维数组,初始化时不需要指明数组大小。
数组下标从0开始。

数组用小括号表示,元素之间用空格隔开。例如:
array=(1 abc "def" yxc)

也可以直接定义数组中某个元素的值:
array[0]=1
array[1]=abc
array[2]="def"
array[3]=yxc

2、读取数组

读取单个元素:${array[index]}   如echo ${array[0]}

读取整个数组:${array[@]}或者${array[*]}

3、数组长度

类似字符串

${#array[@]}  # 第一种写法
${#array[*]}  # 第二种写法

shell语法2-默认变量、数组的更多相关文章

  1. shell编程 Shell script 的默认变量($0, $1...)

    Shell script 的默认变量($0, $1...) 我们知道指令可以带有选项与参数,例如 ls -la 可以察看包含隐藏文件的所有属性与权限.那么 shell script 能不能在脚本文件名 ...

  2. Shell Script的默认变量

    $? #上一个命令执行后所回传的值,当我们执行某些命令时,这些命令都会回传一个执行后的代码.一般来说,如果成功执行该命令则会回传一个0值.如果执行过程发生错误,就会回传“错误代码” $$ #代表目前这 ...

  3. (一)Linux Shell编程——简介、变量、字符串、数组

    1. Shell简介 1.1 Shell出现背景 Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件. 对于图形界面,用户点击某个图标就能启动某个程序:对于命令行,用户输入某个程序的名字( ...

  4. C Shell中的变量数组

    今天刚刚在看一点C Shell的内容,发现一个挺好玩的东西!就是环境变量可以像数组那样来设置!具体设置语法如下: set variable=(element1 element2 ...) //注意元素 ...

  5. ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数

    一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...

  6. shell语法学习

    [原文] 菜鸟笔记shell教程学习. 本篇博客只是记录shell的一些关键语法,主要是做一个记录,有些内容也是copy过来的,并不是一个完整的教程,想完整学习shell的同学可以前往 shell脚本 ...

  7. shell中的特殊变量IFS

    shell中特殊变量IFS的使用 IFS是内部字段分隔符(internal field separator).默认情况下,bash shell会将空格.制表符.换行符 当做字段分隔符. IFS=$'\ ...

  8. 读完学会shell语法,shell脚本80%已经学会

    第3章 shell语法讲解 3.1 shell运算讲解 3.1.1 运算符的讲解 3.1.2 shell运算方式的讲解 3.1.2.1 $(())运算 [root@m01 test_init] # a ...

  9. shell及脚本1——变量

    一.shell shell是操作系统与用户之间的沟通的渠道,可以接收并执行用户的命令,有很多shell程序,目前linux默认使用bash shell程序. bash shell有很多实用功能,例如: ...

  10. shell语法

    基本语法列表 #linux组成:内核+工具 #linux启动: . getty:提示登录名和密码,输入之后调用login . login:login验证用户名和密码,然后调用shell . shell ...

随机推荐

  1. Java基础-运算符、包机制、JavaDoc生成文档

    运算符 Java语言支持如下运算符:优先级() 算术运算符:+,-,*,/,%,++,- 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑 ...

  2. BlendCAC: A Smart Contract Enabled Decentralized Capability-Based Access Control Mechanism for the IoT

    摘要 BlendCAC,它是一种分散的.基于联合能力的 AC 机制,可有效保护大规模物联网系统中的设备.服务和信息.引入了基于联合能力的委托模型 (FCDM) 以支持分层和多跳委托.探索了委托授权和撤 ...

  3. Vue I18n Vue.js 的国际化插件+elementUI的使用

    先附上插件官网 vue-i18n中文官网 我们的vue项目需要支持多语言时,可以使用这个插件 安装插件教程在官网可以找到 代码结构可以如下 zh.js 查看代码 export default { lo ...

  4. socket的客户端和服务端(Windows控制台程序)

    首先是两个程序,分别是socket的客户端和服务端.(在windows系统vc6.0编译)服务器端:#include <Winsock2.h>#include <stdio.h> ...

  5. (二)用go实现二叉查找树

    本篇,我们用go简单的实现二叉查找树. 1.节点定义 type BSNode struct{ data int left, right, parent *BSNode } 2.前序遍历 func (p ...

  6. Docker CLI docker build 常用命令

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化.Docker是内核 ...

  7. scrum和SAFe

    昨天公司培训了scrum开发流程和SAFe,留点资料记录一下 网站:www.scrum.cn 资料:<scrum敏捷软件开发>

  8. M1 IntelliJ IDEA2022安装报错解决方法

    下载地址:http://pan.jizhouyun.com/s/I3QJVzk3et 报错一:系统权限问题 报错示例: 1.XX已损坏,打不开:您应该将它移到废纸娄/已损坏 2.打不开:您应该推出磁盘 ...

  9. java基础(一)~~内存分析

    1.java内存分析 2.2.面向对象内存分析 Java虚拟机的内存可以分为三个区域:栈(stack).堆(heap).方法区(method area): 2.2.1.栈 栈的特点如下: 1.栈描述的 ...

  10. 芯片ADS9224R的FPGA驱动实现

    ADS9224R这款芯片是德州仪器(TI)的一款SAR ADC,笔者写这芯片IP核大概有段时间了,这款ADC采集芯片挺复杂的.笔者当时对写axi4_lite的IP核还不是很熟悉,就接下了含有这款芯片的 ...