Shell学习笔记

该博客是Shell学习笔记,介绍了创建、授权和运行脚本文件的方法。对比了绝对路径、sh和source启动脚本的区别,指出前两者线程不可通信,可用export声明变量解决。还讲解了字符串声明时单双引号的区别,以及bash支持一维数组且无大小限定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell学习笔记

创建脚本文件

vim helloworld.sh

书写内容
书写内容
给脚本文件授权

chmod ug+x helloword.sh

运行脚本文件
在这里插入图片描述
在这里插入图片描述

绝对路径,sh,source启动脚本区别

第一种和第二种都是分别开一个线程然后线程开一个子线程去做事情,线程不可通信,所以子线程拿不到uname,而第三种就是当前进程开了一个线程直接执行,所以能拿到uname
如果想让第一种和第二种拿到数据
可以用export声明变量
脚本内代码

#! /bin/bash
echo 'Hello World'
echo $uname
echo $age                                                                                       
"helloworld.sh" 5L, 55C  

测试export

[root@iZ0jl0esi79qpgl7a2emkrZ ~]# uname=admin
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# export age=20
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# vim helloworld.sh
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# ./helloworld.sh
Hello World

20
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# source helloworld.sh 
Hello World
admin
20

说白了export就是定义一个可以让线程之间可以拿到的数据

字符串

字符串声明的时候可以用 单引号 也可以用双引号 也可以不加单双引号
当出现空格时必须加引号
单双引号区别

[root@iZ0jl0esi79qpgl7a2emkrZ ~]# str1=zhangsan
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# str2='$str1 222'
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo $str2
$str1 222
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# str3="$str1 333"
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo $str3
zhangsan 333

双引号会转译,单引号不会

数组

  • bash支持一维数组(不支持多维数组),并且没有限定数组的大小
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# facs=("zhangsan" "lisi" "wangwu" "chenliu")
#获取指定数据用下标获得
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo ${facs[1]}
lisi
#使用@获得全部数据
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo ${facs[@]}
zhangsan lisi wangwu chenliu
#*也可以获得全部数据
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo ${facs[*]}
zhangsan lisi wangwu chenliu
#获取数组长度
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo ${#facs[@]}
4
#获取指定元素长度
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo ${#facs[2]}
6
[root@iZ0jl0esi79qpgl7a2emkrZ ~]# echo ${#facs[*]}
4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值