由于快要结婚了,这些日子一直很忙所以博客没有怎么更新,10月2号结婚所以十月份也要耽误一段时间,估计十一月份就正常更新了,到时候会增加一个栏目Object-c编程! 今天就简单的讲解一下shell编程吧!前提是同志们,我个人推荐大家先看下鸟哥私房菜基础篇,我也是看书学的没有别的,然后再在网上搜索一下! shell linux shell现在的基本用的都是bash的,脚本的头文件是#!/bin/bash,我们执行shell脚本有两种方式一种是bash 脚本 一种是 chmod 755 脚本 && ./脚本,写个hello word吧!

#!/bin/bash
echo "hello word"
写入别名,譬如我的每当写vi调用的其实是vim
alias  		查看系统中生效的别名
vi  ~/.bashrc		写入别名,永久生效
alias  vi='vim'	手工设定别名,临时生效
source ~/.bashrc 
文件输出和输入stdin 0 键盘输入stdout 1 显示器输出 stderr 2 显示器错误输出,我们可以输出重定向,重定向有两种一种追加的>>一种是覆盖的>
  ls test >aa   覆盖的
  ls test >>aa  追加的
  ls test &>aa  错误正确的都输出到aa也可以使用 ls test >aa 2>>&1
linux中也有这个&&如果前边的正确后边的才执行
  ls test && cd test 前边的正确执行后边的,前边不正确后边的不执行
  ls test || cd test 前边的错误执行后边的正好相反 用&& ||能做三元运算的效果
  netstat -tlnu | grep 80 |用前边的做结果运行叫做管道符
 
其中linux中查看变量用set 删除变量用unset 调用的时候可以用echo $变量名称 变量设定规则 1)变量以等号连接值,等号不能有空格 2)变量名由数字和字母和下划线组成,不能以数字开头 3)变量值中有空格,用引号括起来 4)双引号内,有特殊字符。如$ 5)单引号中特殊字符无含义 6)在变量值中,可以使用\转义符 7)变量值可以直接调用系统命令。 `命令` $(命令) 8)变量值可以累加 aa=123 aa="$aa"456 echo $aa 环境变量必须大写! 变量参数的讲解 $? 上一个命令的返回值。 0 上一个命令正确执行 非0 上一个命令不正确 $# 统计命令的参数个数 $* 返回所有参数 $n 位置参数变量 譬如$0 就能显示第一个你输入的参数 键盘读取命令 read -p “提示信息” -t 等待时间 变量名 数值运算 变量值默认都是字符串型,要想进行数值运算。以下三种任选一种 1)declare方法 num1=123 num2=456 declare -i sum=$num1+$num2 2)sum=$(( $num1 + $num2 )) 3)sum=$(expr $num1 + $num2) 注意+左右必须空格 4)运算符 + - \* / %取余 linux的正则表达式grep 这个其实很简单只要大家熟悉其他语言的正则表达式这个就很快了,看一下就可以了,这里就不多说了 命令提取符有两种,一种cut 一种awk
  cut  -d  “分隔符”  -f  提取列   文件名
  more /etc/passwd | grep "/bin/bash" | cut -d ":" -f 1,3
  提取passwd文件中可以登录的用户的用户名和UID
  last | grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"|awk '{printf $1 "\t" $3 "\n"}'
  
awk内置变量 FS 指定分隔符 more /etc/passwd | awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}' 读取passwd文件,以":"为分隔符,截取第一和第三列 BEGIN 在截取前使分隔符生效。如果没有BEGIN,那么第一行自定义的分隔符不生效 linux的条件测试test -e 文件是否存在 存在为真 -f 是否为普通文件 -d 目录 -b 区块设备 -c 字符设备 -r 是否可读 -w 是否可写 -x 是否可执行 -s 是否是非空白 文件比较 两个文件比较的 -nt 是否是最新 -ot 是否旧的 -eq 是否相等 -ne 是否不相等 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于 字符串比较 -z 是否为空 == 是否相等 != 不等于 多重判断 -a 逻辑与 -o 逻辑或 ! 逻辑非 流程控制语句 和其他语句一样都是 if else while for 等等
if  条件测试命令 
    then   命令序列
    else   命令
fi
 
多分支
	if  条件测试命令1  ;  then
   		命令序列1
	elif  条件测试命令2  ;  then
    	命令序列2
	elif  ...
	else
    	命令序列n
	fi
for语句的
for  变量名  in  取值列表
		do
     		命令序列
		done 
case 语句 根据不同的条件判断
  case word in
	pattern )
		;;
esac
while的语句
while [[ condition ]]; do
	#statements
done
时间紧促所以就这样写了,然后我在虚拟机上安装了nginx然后写了一个nginx的启动脚本这样,就可以用service nginx start等命令了,放出来,大家没事练习一下,可以自己添加php-fpm这些就能够做一个完整的nginx启动脚本了
#!/bin/bash

DESC="nginx manage"
NAME="nginx"
MANAGE=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PID=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

test -x $MANAGE || exit 0

m_start(){
	$MANAGE -c $CONFIGFILE || echo -n "nginx is already runing"
}

m_stop(){
	kill -QUIT `cat $PID` || echo -n "nginx not runing"
}

m_reload(){
	kill -HUP `cat $PID` && exit 1
}

case "$1" in
	start )
			echo -n "$DESC Starting $NAME "
			m_start
			echo "."
		;;
	 stop )
			echo -n "$DESC Stopping $NAME "
			m_stop
			echo "."
		;;
	 restart )
			echo -n "$DESC Restart $NAME "
			m_reload
			echo "."
		;;

esac

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部