《linux shell 脚本攻略》笔记。
小试牛刀——知识总结
- 脚本运行
脚本文件提供x权限 chmod a+x filename, ./filename
sh filename ,/bin/bash filename
终端环境:~/.bashrc ~/.bash_history
- 终端输出和读取
echo 显示
“string" ——在字符串中的特殊符号会进行替换 $var ,需要特殊符号的原本含义时候,需要转义 \
'string'——不会进行替换
`command` ——将命令的执行结果作为输入
echo中转义换行符
echo -e ”1\t2"
echo显示时默认会追加\n ,如需要将其去掉 echo -n
printf输出
按照格式化输出方式。
printf "%-5s,%-6s\n" var1,var2
read 读取,可以与程序进行交互
读固定长度的字符串 read -n length var 不用最后按回车符
read -p "enter input" var
read -t timeout var - 变量与环境变量
环境变量的查看env set
变量一般是我们自定义的变量,环境变量是所有程序都可以访问的变量,在我们取得shell时他们就已经生成了。
export可以将我们自定义的变量,转变成环境变量,这样子进程可以继承他们。
变量的定义
var=value
$var或者${var} 可以得到变量的取值。
${#var} 为变量的长度
一些重要的环境变量:UID SHELL HOME MAIL
- shell进行数学运算
使用let,变量名之前不需要加$ let result=no1+no2
使用操作符 result=$[no1+no2]
result=$((no1+no2))
还用一种使用expr var1 + var2 注意在+左右需要空格。
这些方法只能进行整数运算,如果进行浮点数运算需要bc echo "4*0.4" | bc - 文件描述符和重定向
操作系统对文件的管理是通过文件描述符来管理的。系统预留的有
0——stdin 1——stdout 2——stderr
重定向 >重新写入,会把以前的文档内容删除 >>追加模式。
cmd 2>stderr.txt 1>stdout.txt
重定向在工作管理(jod control)具有重要作用。 - 数组
定义:整数索引
var=(1 2 3 4 5) 访问 ${var[0]} 全部 ${var[*]} - 命令别名
alias new_command='command sequence'
查看命令的类型使用 type - 调试脚本
sh -x script.sh - 函数
定义函数:
function fname()
{
statements;
}
或者也可以不要function
函数执行 fname; fname arg1,arg2; - 字段分割符和迭代器
内部字段分割符(iternal field separator,IFS)
data="name,sex,rollno"
oldifs=$IFS
IFS=,
for item in $data;do
echo $item
done