【Linux学习随笔】三、shell语法-默认变量
前言:怎么乍看好像跟博主的前篇文章冲突了?hh,其实没有打脸。何为默认变量呢?我的理解是系统变量,即当时设计Linux系统的人设置了一些固定的变量,估计是懒,为了方便提高效率吧,hh。有一说一,这些变量确实很方便,shell语言本来就是方便批量化进行一些文件操作。
一、文件参数变量
在执行脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。而$0是文件名,包含路径。给大家举个栗子吧。
(1)创建文件test.sh
(2)vim test.sh
(3)按i进入编辑模式
(4)#!/bin/bash
echo "文件名:" $0
echo "第一个参数:" $1
echo "第二个参数:" $2
(5)执行脚本 ./test.sh aaa zzz #记得在执行前给文件加执行权限 chmod +x test.sh
(以下为输出)
文件名:./test.sh
第一个参数:aaa
第二个参数:zzz
二、其他参数变量
(1)$#:意思是传进文件传了几个参数,就像上面举的例子是两个参数
(2)$*:由所有参数构成的用空格隔开的字符串,如上例为"$1 $2"
(3)$@:每个参数分别用双引号括起来的字符串,如上例为"$1" "$2"
(其实第二个和第三个实际中用的差不多,虽然两个东西定义不同)
(4)$$:脚本当前运行的进程ID
(5)$?:上一条命令的退出状态(exit code),0表示正常,其他值表示错误。可以拿return来理解
(6)$(command):返回这条命令的stdout。其实说白了就是标准输出。
(7)`comdmand`:返回这条命令的stdout。注意不是单引号,是tab键上面的那个符号
(第六个和第七个实际上用的也差不多,但还是有区别的,第六个能嵌套使用,但第七个不能)