学习shell编程
时间:2010-08-18 来源:icybay
之前想写shell编程呢,突然发现自己对shell编程也仅仅是个初学者,不敢写这么大的内容,所以严谨一点,还是学习shell编程吧。
shell是与kernel相对应的概念,可以认为它是一个用户和kernel交互的工具。shell可以分为C shell 和 B shell。其中BASH是linux下面默认的shell。优点:记忆命令功能,档案比对补全功能,命令别名功能,工作控制和前景背景控制功能。
echo: 显示变量内容; env: 显示系统中主要的预设变量内容; set: 显示系统中全部的变量内容。 unset: 取消变量; export: 设定环境变量; read: 接收用户键盘输入; array: a[索引]=内容; echo ${a[索引]}; $RANDOM: 随机数; eval: 二次迭代。eval echo \$$a; alias: 命令别名, alias rm='rm -i'; 取消别名:unalias;
系统设定档案: /etc/profile /ect/bashrc /etc/man.config
个人设定档案: ~/.bash_profile ~/.bashrc ~/.bash_history
绝对路径与相对路径
命令重导向: stdin: 0; stdout: 1; stderr: 2;
ls -al > list.txt or ls -al >> list.txt or ls -al 1>list.txt 2>list.err or ls -al 1>list.txt 2>&1 or ls -al 1>list.txt 2> /dev/null
管线命令: |: last | grep root |wc -l
cut: 同一行的数据进行分解
sort: -n:纯数字排序 -r:反向排序 -u:相同行只出现一次
wc: -l:多少行 -m:多少字符 -w:多少字
uniq: 重复的行删除只显示一个
tr: tr '[a-z]' '[A-Z]' 大小写转换,tr -d SET:删除SET字符串, -s:取代重复的字符
split: -b:以档案size来分,-l:以行数来分
当写scripts时,如果需要计算则必须区分数字与字符,可以使用declare,如:declare -i a=3;
-a:定义数组;-f:定义函数;-i:定义整数;-r:定义只读;-x:定义透过环境输出变量
sh myscript opt1 opt2 opt3 则:$0=myscript $1=opt1 $2=opt2 $3=opt3
逻辑判断式
条件式判断:if [] && []; then 执行 elif [] || []; then 执行 else 执行 fi
case string in
方式一) 执行
方式二) 执行
*) 执行 exit
esac
循环:for((条件1;条件2;条件3)) do 执行 done
for var in var1 var2.. do执行 done
while [] && { || } [] do 执行 done
until [] && { || } [] do 执行 done
shell是与kernel相对应的概念,可以认为它是一个用户和kernel交互的工具。shell可以分为C shell 和 B shell。其中BASH是linux下面默认的shell。优点:记忆命令功能,档案比对补全功能,命令别名功能,工作控制和前景背景控制功能。
echo: 显示变量内容; env: 显示系统中主要的预设变量内容; set: 显示系统中全部的变量内容。 unset: 取消变量; export: 设定环境变量; read: 接收用户键盘输入; array: a[索引]=内容; echo ${a[索引]}; $RANDOM: 随机数; eval: 二次迭代。eval echo \$$a; alias: 命令别名, alias rm='rm -i'; 取消别名:unalias;
系统设定档案: /etc/profile /ect/bashrc /etc/man.config
个人设定档案: ~/.bash_profile ~/.bashrc ~/.bash_history
绝对路径与相对路径
命令重导向: stdin: 0; stdout: 1; stderr: 2;
ls -al > list.txt or ls -al >> list.txt or ls -al 1>list.txt 2>list.err or ls -al 1>list.txt 2>&1 or ls -al 1>list.txt 2> /dev/null
管线命令: |: last | grep root |wc -l
cut: 同一行的数据进行分解
sort: -n:纯数字排序 -r:反向排序 -u:相同行只出现一次
wc: -l:多少行 -m:多少字符 -w:多少字
uniq: 重复的行删除只显示一个
tr: tr '[a-z]' '[A-Z]' 大小写转换,tr -d SET:删除SET字符串, -s:取代重复的字符
split: -b:以档案size来分,-l:以行数来分
当写scripts时,如果需要计算则必须区分数字与字符,可以使用declare,如:declare -i a=3;
-a:定义数组;-f:定义函数;-i:定义整数;-r:定义只读;-x:定义透过环境输出变量
sh myscript opt1 opt2 opt3 则:$0=myscript $1=opt1 $2=opt2 $3=opt3
逻辑判断式
条件式判断:if [] && []; then 执行 elif [] || []; then 执行 else 执行 fi
case string in
方式一) 执行
方式二) 执行
*) 执行 exit
esac
循环:for((条件1;条件2;条件3)) do 执行 done
for var in var1 var2.. do执行 done
while [] && { || } [] do 执行 done
until [] && { || } [] do 执行 done
相关阅读 更多 +