Linux Shell 笔记
# #!是一个约定标记,告诉系统用哪个Shell来执行
#!/bin/bash
# echo:在控制台窗口输出文本
echo "hello world"
# 添加可执行权限
chmod +x ./test.sh
# 执行脚本
./test.sh
# 变量命名规则
# 1,变量名和=之间不能有空格;
# 2,由英文字符、数字、下划线组成,不能数字开头,不能使用bash关键字
# 使用变量
# $变量名 或者 ${变量名} 推荐
# 设置变量只读
readonly 变量名
# 删除变量(不能删除只读变量)
unset 变量名
# 变量类型
# 1,局部变量:在脚本或命令中定义,仅在当前shell实例中有效,其他shell不能访问
# 2,环境变量:所有的包括shell启动的程序都能访问,有些程序依靠环境变量运行。shell脚本可以定义环境变量
# 3,shell变量:由shell程序设置的保证shell正常运行的特殊变量。
# Shell字符串
# 1,单引号:任何字符都会原样输出,所以变量是无效的;不能出现单独的一个单引号,可以成对出现拼接
# 2,双引号:可以有变量,会转义字符
# 3,不用引号
# 获取字符串长度
${#string}
# 提取字串:从第二个字符开始截取 4个字符,有头有尾
${string:1:4}
# 查找字符串:查找字符i或o的位置(哪个字符先出现就计算哪个)
·expr index "$string io"
# Shell数组:只支持一维数组,元素用空格分隔
# 定义:数组名=(值1 值2 ... 值n)
# 读取某个数组
${数组名[下标]}
# 读取所有元素
${数组名[@]}
# 获取数组元素个数
length=${#数组名[@]}
length=${#数组名[*]}
# 获取数组中单个元素的长度
lengthn=${#数组名[n]}
# Shell注释
# 单行:#
# 多行:
:<<EOF
注释内容
注释内容
EOF
# Shell参数传递
# 脚本中定义$n,如$1 $2 $3
# 运行时传递 A B C
# 算术运算符:使用反引号``括起来,算术运算符两侧必须有空格
`expr $a + $b`
`expr $a - $b`
`expr $a \* $b`
`expr $a / $b`
`expr $a % $b`
# 条件表达式,[]括起来,[]同样必须有空格
[ $a == $b ]
[ $a != $b ]
# 关系运算符:-eq、-ne、-gt、-lt、-ge、-le
# 两边相等,返回true
[ $a -eq $b ]
# 逻辑运算符:!、-o、-a、||、&&,非、或、与、双与、双或,双与/双或要加上两个[]
# 字符串运算符:=、!=、-z、-n、$,等于、不等于、是否是0长度、是否不是0长度、是否为空
# 文件测试运算符:-d、-f、-r、-w、-x、-s、-e,文件夹、普通文件、可读、可写、可执行、文件大小不为0、存在
# read:从标准输入读取一行,并指定给变量
read inputStr
# echo:字符串输出
echo -e "a \n b" # -e 开启转义,\n 换行
# printf命令: