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