shell基础知识

本文详细介绍了Linuxshell中的系统内置变量如退出状态、进程ID等,shell的执行方式、环境变量相关文件、数组(包括普通数组和关联数组)的定义和操作,以及read命令的常用技巧。还涉及了变量路径解析和文件名处理方法。
摘要由CSDN通过智能技术生成

一、系统内置变量

$?  表示上一个命令和脚本的退出状态
$$  表示当前进程的PID
$!  表示上一个后台命令的PID
$0  表示脚本本身
$1-$9,${10}   表示第几个参数
$#  表示总共有几个参数

shell就是人机交互的一个桥梁,有很多种的shell解释器

二、shell的执行

标准执行方式(需要有可执行权限x):
1.绝对路径:[root@localhost ~]# /root/shell1.sh
2.相对路径:[root@localhost ~]# ./shell1.sh
非标准执行方式(不需要有可执行权限):
1.[root@localhost ~]# sh shell1.sh 
2.[root@localhost ~]# bash shell1.sh 
3.[root@localhost ~]# . shell1.sh 
4.[root@localhost ~]# source shell1.sh 
查看执行过程:[root@localhost ~]# bash -x shell1.sh 
检查语法是否错误:[root@localhost ~]# bash -n shell1.sh 

[root@localhost tmp]# rename file test file[123]  #批量修改名字

三、环境变量相关的一些文件

1$HOME/.bashrc   #当前用户的bash信息
2$HOME/.bash_profile   #当前用户的环境变量
3$HOME/.bash_logout    #每个用户退出当前shell时最后读取的文件
4、/etc/bashrc           #使用bash shell用户的全局变量
5、/etc/profile          #系统和每个用户的环境变量
变量的定义不能以数字开头,不能包含特殊字符

四、数组

1.定义普通数组
[root@localhost ~]# array[0]=var1   #第一种方式
[root@localhost ~]# array1=(name1 name2 name3)    #第二种方式
[root@localhost ~]# declare -a   #查看所有数组
[root@localhost ~]# echo ${array1[0]}  #读取数组里面的下标为0的元素
[root@localhost ~]# echo ${array1[*或者@]}    #读取数组里面所有的元素
[root@localhost ~]# echo ${array1[*]:1:2}     #从数组下标为1开始读取,一共读取两个元素
[root@localhost ~]# echo ${#array1[*]}        #查看数组里总共有多少个元素
[root@localhost ~]# echo ${!array1[*]}        #查看数组里面元素的下标
2.定义关联数组
[root@localhost ~]# declare -A books_array    #先声明关联数组
[root@localhost ~]# books_array[java]=1       #第一种方式
[root@localhost ~]# books_array[linux]=2
[root@localhost ~]# books_array[php]=3
[root@localhost ~]# echo ${books_array[linux]}   #查看单个元素
[root@localhost ~]# echo ${books_array[*]}       #查看所有元素
[root@localhost ~]# echo ${#books_array[*]}      #查看元素的个数
[root@localhost ~]# echo ${!books_array[*]}      #查看元素的下标
[root@localhost ~]# names_array=([name1]=zhangsan [name2]=lisi [name3]=wangwu)  #第二种方式

五、read常用法

[root@localhost ~]# read -p "Input your name:" name  # -p参数输出提示
[root@localhost ~]# read -s -p "Input your name:" name   # -s参数输入时不显示
[root@localhost ~]# read -n 3  -p "Input your name:" name  # -n参数限定输入的长度
[root@localhost ~]# read -t 3  -p "Input your name:" name  # -t参数限定输入的时间

六、其他变量

[root@localhost ~]# A=/linux/redhat/test.txt
[root@localhost ~]# dirname $A      #获取变量A的目录
/linux/redhat
[root@localhost ~]# basename $A     #获取变量A的文件名
test.txt

[root@localhost ~]# A=www.baidu.com
[root@localhost ~]# echo $A
www.baidu.com
[root@localhost ~]# echo ${A#*.}   #从左往右删除.以前的内容
baidu.com
[root@localhost ~]# echo ${A##*.}
com
[root@localhost ~]# echo ${A%.*}   #从右往左删除.以后的内容
www.baidu
[root@localhost ~]# echo ${A%%.*}
www
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值