您的位置:首页 > 运维架构 > Shell

今天开始学习shell编程!!!

2012-12-11 17:26 246 查看
已经入职一个月了。

经过这一个月重复的工作每天都是做一些环境配置的事。

对环境配置已经很熟练了。也不需要再通过每一步的安装来学习新的知识了。

所以我想写一个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 学习