已经入职一个月了。
经过这一个月重复的工作每天都是做一些环境配置的事。
对环境配置已经很熟练了。也不需要再通过每一步的安装来学习新的知识了。
所以我想写一个shell脚本让程序自己安装。
昨天晚上都凌晨12点了又突发灵感非要写,然后从温暖的被窝里爬出来打开电脑写了我平生第一个shell脚本。
如我所料,很失败。因为对shell的语法一点都不了解。就那么一堆命令往程序里面一堆。
今天决定该学习SHELL啦!!!
编程出身的我果然对编程很有感觉。因为大学编了3年程现在学习shell我知道哪些是以后编程会用到的。注重学习哪些内容。一下子看了7个shell基础视频,边看边敲,觉得时间过的真快呀!
今天学习了一下简单的语法。如下:
1.fork炸弹
#env | grep LANG
#vi fork.sh
#chmod +x fork.sh
#./fork.sh
2.bash的启动顺序
init--getty--login--bash
3.bash初始化文件
#pstree
#top
#vi /etc/profile
#rpm -qa | grep vim
#yum install vim*
#alias vi=vim
#vi ~/.bash_profile //单个用户自己的环境
alias vi=vim 长久保持
#vi /etc/profile //全局环境
alias vi=vim 长久保持
4.
#bash --version
#type pwd
#type test
#ls;pwd;date
#exit
#(ls;pwd;date)>outputfile.txt
#cat outputfile.txt
#unalias vi //取消
#\vi //暂时不使用
5.
#vi test.sh
#!/bin/bash //必须有,指出shell类型为bash
while:
do
echo"welcome boobooke"
sleep 5 //5s执行一次的死循环
done
6.
#vi test1.sh
#!/bin/bash
#Cleanup
cd /var/log
cat /dev/null > messages
cat /dev/null > wtmp
echo "Logs cleaned up."
#chmod +x test1.sh
#./test1.sh //新的shell执行
#. test1.sh //当前shell执行
#source test1.sh //当前shell执行
#eval '. test1.sh' //当前shell执行
#/bin/bash test1.sh
7.
#vi test2.sh
#!/bin/bash
who_name="wilson"
echo "${who_name}hello,shell word"
8.
#vi test3.sh
#!/bin/bash
function say_hello()
{
echo "Enter Your name:"
read name
echo "Hello $name"
}
echo "programme starts here....."
say_hello
echo "programme ends"
9.命令替换
#ls 'cat file' -al
10.变量与常用符号
#echo $PATH //环境变量
#name=boobooke //本地变量只在该shell有用
#echo $name
#bash //启动一个子shell不能用了
#echo $name
#name=admin
#echo $name
#exit
#echo $name
#echo $PATH
#bash
#echo $PATH
11.
区分大小写
=两边不可以有空格
空格用“”
#name="welcome boobooke"
#echo $name
#echo "admin say $name"
#echo "admin say ${name}root"
12.
#set //局部变量
#unset name
#set
#echo ${name}${name}
13.设置只读变量不可清除更改
#free=book
#echo $free
#readonly free
#free=www
不行
14.
#env //环境变量
#echo $HOME
#bash
#echo $HOME
#exit
#NAME=book
#export NAME
#env | grep N
#unset NAME
15.
#echo $PATH
#PATH=${PATH}:/opt/bin
#echo $PATH
16.
变量长度
${#var} 字符串长度($var的字符数量)
对于一个数组,${#array}是数组中第一个元素的长度
#name=boobooke
#name="www boobooke com"
#echo $name
#echo ${#name}
//包括空格
#arr1=(a bb ccc dddd)
#echo ${#arr1} //arr1数组第一个元素的长度
#echo ${#arr1[*]} //arr1数组有几个元素
#echo ${arr1[*]} //输出数组所有元素
#echo ${arr1[2]} //输出数组第3个元素
17.
变量扩展
${var:pos} 变量var从位置pos开始取字符
${var:pos:len}从位置pos开始,取len个字符
${var/Pattern/Replacement}
使用Replacement来替换var中的第一个Pattern的匹配
${var//Pattern/Replacement}
全局替换,在var中所有的匹配都用Replacement来替换
18.
指定类型的变量
declare
typeset
-r 只读
#declare -r var1 =#readonly var1
-i整形
#declare -i nu
#nu=1234
#echo $nu
#nu=3.12 不行
#mou=3.12可以
-a 数组
-f 函数
-x export
19.变量的间接引用
#admin=wilson
#wilson=book
#echo $admin
#eval admin=\$$admin
#echo &admin
20.产生随机整数
$RANDOM
#!/bin/bash
count=1
MAX=10
while ["$count" -lt "$MAX"] //-lt是小于
do
num=$RANDOM
echo $num
let "count+=1"
done
echo"-----------"
21.位置变量参数 最多9个
#vi var1.sh
#!/bin/bash
echo"这个脚本的名字是$0"
echo"第1个参数是$1"
echo"第2个参数是$2"
echo"第3个参数是$3"
echo"第4个参数是$4"
echo"第5个参数是$5"
#chmod +x var1.sh
#./var1.sh a b c d e f
22.
#vi var2.sh
#!/bin/bash
echo "Hello,$1 welcome boobooke!"
#./var2.sh welson
输出:Hello,welson welcome boobooke!
23.向系统命令传递一个参数
#!/bin/bash
grep $1 /etc/passwd | awk -F:'{print $3"\t"$6}'
//输入用户,查出他的UID和家目录
#vi grep.sh
#!/bin/bash
grep $1 /etc/passwd
#chmod +x grep.sh
#./grep.sh root