首页 > 代码库 > shell编程基础

shell编程基础

写脚本:写的是维护工具,也是写脚本的目的,用途

shell,直译是壳

shell脚本是面向过程的


#!/bin/bash是指此脚本是用那种shell解释执行的,是特殊的表示符



/etc/profile:给用户加载最基本的环境变量,配置全局变量

~/.bash_profile:个人环境

/etc/bashrc:配置别名或shell选项

================================

[root@Dragon lianxi]# vim sayhello.sh
[root@Dragon lianxi]# bash sayhello.sh
hello
[root@Dragon lianxi]# . sayhello.sh
hello
[root@Dragon lianxi]# source sayhello.sh
hello
[root@Dragon lianxi]# ./sayhello.sh
bash: ./sayhello.sh: Permission denied
[root@Dragon lianxi]# chmod +x sayhello.sh
[root@Dragon lianxi]# ./sayhello.sh
hello
[root@Dragon lianxi]# cat sayhello.sh
echo hello

========================

#env 查看机器的环境变量


退出shell后所有命令会保存在~/。bash—hostname下


非登录shell会继承登录shell的环境变量

举例如下:

[root@Dragon ~]# jiji=liyuanji
You have new mail in /var/spool/mail/root
[root@Dragon ~]# sh
sh-4.1# echo $jiji

sh-4.1# exit
exit
[root@Dragon ~]# export jiji
[root@Dragon ~]# sh
sh-4.1# echo $jiji
liyuanji


shell的作用---命令解释器,负责解释命令行

面向过程:从头执行到尾,整个过程要自己写

面向对象:基于抽象数据类型的,


===修改一次保存历史命令的多少=====

[root@Dragon ~]# ls .bash*
.bash_history  .bash_logout  .bash_profile  .bashrc
[root@Dragon ~]#

[root@Dragon ~]# vim /etc/profile 改得是HISTSIZE的大小随意改
[root@Dragon ~]# echo $HISTSIZE
1000
[root@Dragon ~]# . /etc/profile   中间有空格,看得是当前shell里

#[root@Dragon ~]# source /etc/profile与上面. /etc/profile用法一样

[root@Dragon ~]# echo $HISTSIZE
2000
[root@Dragon ~]# bash /etc/profile  看得是子shell里的
[root@Dragon ~]# echo $HISTSIZE
2000
===========

#bash  a.sh    与 #./a.sh执行效果一样


查看机器里的所有shell

[root@Dragon ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
You have new mail in /var/spool/mail/root

===================

[root@Dragon ~]# tail -1 /etc/passwd
wanglong:x:2029:2030::/home/wanglong:/bin/bash
[root@Dragon ~]# vim /etc/passwd
[root@Dragon ~]# tail -1 /etc/passwd
wanglong:x:2029:2030::/home/wanglong:/bin/sh
[root@Dragon ~]# su wanglong
sh-4.1$ pwd
/root
sh-4.1$ exit
exit



函数与case语句用法举例

getyn( )
{
while echo "enter y/n:"
do

read yn
case $yn in
[Yy]) return 0 ;;
yes) return 0 ;;
YES) return 0 ;;
[Nn]) return 1 ;;
no) return 1;;
NO) return 1;;
* ) echo "only accept Y,y,N,n,YES,yes,NO,no";;
esac
done
}