简介
shell 语法学习笔记。
重定向
标准输入、标准输出、错误输出
1、输入重定向
read var < ~/test.txt
2、输出重定向
echo 123 > ~/test.txt
> 替换原文件
>> 追加至原文件
2> 将错误输出到原文件
&> 不管错误还是正确的信息都添加在原文件
管道符
将前一个命令执行的结果传递给后一个命令
ls -alh | more
shell 脚本执行方式
1、会重新开一个进程
bash xxx.sh
./xxx.sh
2、在当前进程执行
source xxx.sh
. xxx.sh
变量的赋值
1、=
a=123
2、用let给变量赋值
let a=10+20
3、将命令赋值给变量
a=ls
4、将命令结果赋值给变量
a=${ls -l etc}
变量的引用
1、引用变量
${变量名}
2、获取变量
echo ${变量名}
3、部分情况可以省略{}
$变量名
变量的作用范围
1、变量的导出
export
2、变量的删除
unset
系统环境变量
1、环境变量
set和env命令
$? 上条命令是否正确,正确返回0
$0 运行程序的终端或文件
$$ 命令的进行id
$PATH 系统环境变量
2、位置变量
$1 $2 … $n
环境变量配置文件
/etc/profile
.bash_profile
.bashrc
/etc/bashrc
定义数组
1、定义数组
IPS=(10.0.0.1 10.0.0.2 10.0.0.3)
2、显示数组所有元素
echo ${IPS[@]}
3、显示数组第一个元素
echo ${IPS[0]}
4、显示数组长度
echo ${#IPS[@]}
特殊字符
# 注释
; 分割命令
\ 转义字符
” 双引号【里面可以使用变量】
' 单引号【里面的${变量名},不会被解析】
` 反引号【里面可以执行命令】
运算符
1、赋值运算符: =
2、算数运算符
+、-、*、/、**、&
expr 4 + 5 (使用expr进行运算)
3、数字常量
let 变量名=变量值
4、双圆括号: (())
变量赋值: ((a=10))
变量自增: ((a++))
获取变量: echo $((10+20))
5、单圆括号: ()
数组: ()
子shell: (xyz=123)
6、单双括号: []、[[]]
单括号: 测试(test)或数组元素功能
双括号: 两个方括号表示测试表达式
7、花括号: {}
输出范围: echo {0..9}
文件复制: cp /etc/passwd{,.bak}
8、逻辑运算符
&& || !
9、?运算符
test 命令
1、用途
文件测试、整数比较测试、字符串测试
2、简写: []
3、[] 符号还有扩展写法 [[]] ,支持 && || < >
判断语句
if [测试条件成立]或命令返回值 $? 返回值为 0; then
执行相应命令
elif [测试条件成立]或命令返回值 $? 返回值为 0; then
执行相应命令
else
执行相应命令
fi
case 分支
case "${变量名}" in
"情况1")
命令1;;
"情况2")
命令2;;
*)
命令3;;
esac
for 循环
for 参数 in 列表; do
执行相应命令
done
while 循环
while test测试是否成立;
do
执行相应命令
done
函数
函数申明
testFuc() {
ls
}
函数执行
testFuc