首页 > 代码库 > 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 } |