Shell脚本

 

集中保存了多条Linux命令,普通文本文件
完成特定的,较为复杂的系统管理任务
执行方式:按照预设的顺序依次解释执行

有时候多一个空格都报错,注意注意


10.chmod a+x test.sh 
a 是all所有人,意思是给所有人添加一个执行的权限

11.执行shell脚本的方式
  
  1.bash test.sh
  #不需要解析器
  #不需要给脚本设置执行权限
    
  2. /test.sh
  #需要标注解析器
  #需要给脚本设置执行权限


12.写一个示例:
vi /opt/ftpclean.sh
#!/bin/bash
date >> /var/log/pubdir.log
ls -lhR /var/ftp/pub >> /var/log/pubdir.log
rm -rf /var/ftp/pub/*

执行:
crontab -e
30 17 * * 5 /opt/ftpclean.sh


13.
#!/bin/bash
#test.sh

name = 'user123'
echo "my name is ${name}bg"

14.从键盘输入内容为变量赋值
格式:read [-p "信息"] 变量名
 
15.单引号,双引号,反引号

双引号解析变量
反引号 解析一条命令,并把命令返回值输出:
$str = `echo 123`
echo $str


16.Shell变量种类,三种
用户自定义:用户自己定义,修改,使用
预定义变量:Bash预定义的特殊变量,不能直接修改
位置变量:通过命令行给程序传递执行的参数

shell脚本编程更强的是面向命令的处理

17.shell脚本传递参数可以传递十个参数(位置变量只有九个)
./test.sh a b c d ... 
echo $1...$10


18.脚本参数
$#:命令行中位置参数的个数
$*:所有位置参数的内容
$?:上一条命令执行后返回的状态,当返回状态为0时,表示执行正常,非0时表示执行异常或者出错
$0:当前执行的进程、进程名

例如:
$0 脚本名称

for i in $*; do 
    echo $i
    sleep 1
done


19.expr 可以算数

例如:
#!/bin/bash
#test.sh

num = `expr 1 + 2`
echo $num


20.输出没有换行 
echo /n 'your name is:'
read -p "your name is:"

21.修改字体颜色
echo -e "httpd process \033[32;40m[ok]\033[0m"

#\033[前景颜色;背景颜色m
#\033[0m 结束

30-37 黑红绿宗蓝紫青白


21.

cate /etc/passwd | more # 看一个文件的所有

cate /etc/passwd | head # 看一个文件的前十行

cate /etc/passwd | tail # 看一个文件的后十行

保持文字原样输出(用他快速的做菜单):
cat <<x

    aaaaaaa

x

把输出的结果保存起来:

cat/etc/passwd | tee

把整个文件的内容全部打印出来

cat /etc/passwd | more | nl #加上行号


22.条件测试 -11
例子:
#!/bin/bash
#test.sh

if [ -f ./file1 ]
then
    echo "file1 is exists!"
else
    echo "file1 is not exists"
fi


23. &&

[ -e /media/cdrom ] && echo "YES"
如果测试的条件成立则输出YES


24.

-eq 等于
-ne 不等于
-gt 大于
-lt 小于

25.who 当前登录这个系统有多少个用户

who | wc -l 

26.字符串比较 = != 
格式: 
[ 字符串1 = 字符串2 ] 字符串内容相同
-z : 字符串内容为空


27.逻辑测试
-a or &&
||


28.case语句

case $week in
    1)
    echo '周一'
    ;;
    2)
    echo '周二'
    ;;
    *)
    echo '其余'
    ;;
esac

29.循环控制:

for in 
例子:
#!/bin/bash
#test.sh

for i in `cat user.txt`
do 
    echo $i
    useradd $i
    echo 123|passwd --stdin $i
done

注释:in 背后可以是各种命令


for循环:

for((i=0;i<10;i++))
do
    echo $i
    useradd user$i
    echo 123 | passwd --stdin user$i
done

30.在shall脚本中,定义变量是不用带$,输出是要带$符号的

31.shift 让参数左侧偏移


32.函数传参

#!/bin/bash
#test.sh

function add(){
    num = $1
    tot = 0
    
    for((i=1;i<=$num;i++))
    do
        tot=$(($tot+$i))
    done    
        echo $tot
}

add 3
add 6 
add 100


33.find 文件查找

find . -name "*.txt"
find . -name 'file[0-9]*'
find /etc -name "host*"
find / -name "eth0"
find -perm 755


34.grep 正则表达式

\ 用来转义真实的.?等符号
[0-9a-z]匹配括号里面的任意一个字符

grep -c 'linux' file #找出包含linux的有几行
grep -n 'linux' file #行号
grep -i 'linux' file #忽略大小写查找
grep 'linux' file #找出包含linux的行
grep -v 'linux' file #不包含linux的行
grep -E '^linux' file #查出包含以linux开头的行 
grep -E 'linux$' file #查出包含以linux结尾的行 
grep -En '(linux){2,4}' file #查出包含以linux2次到4次的行 

[^210] #不是210开头的行

35.AWK编程工具
cat /etc/passwd | awk -F:    '{print $1 "=>" $3}'
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值