博主信息
博文 41
粉丝 0
评论 1
访问量 48455
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
高级bash脚本编程指南
yeyiluLAMP
原创
1236人浏览过

#!/bin/bash这一行是表示使用/bin/bash作为脚本的解释器,这行要放在脚本的行首并且不要省略
脚本正文中以#号开头的行都是注释语句,这些行在脚本的实际执行过程中不会被执行。这些注释语句能方便我们在脚本中做一些注释或标记,让脚本更具可读性。

运行Bash脚本的方式:

# 使用shell来执行
$ sh hello.sh
# 使用bash来执行
$ bash hello.sh
使用.来执行
$ . ./hello.sh
使用source来执行
$ source hello.sh
还可以让脚本本有者该执行权限,允许该用户执行该脚本
$ chmod u+rx hello.sh
# 执行命令,这身就具有可执行权限,通过chmod命令可以修改:
# 赋予脚本的所将使用脚本第一行指定的shell来执行,如果指定shell不存在,将使用系统默认shell来执行
$  ./hello.sh



遇到权限不够的提示,为什么,如何解决?
权限不够加sudo啊,可是你会发现

sudo cat /dev/null > /var/log/wtmp

一样会提示权限不够,为什么呢?因为sudo只能让cat命令以sudo的权限执行,而对于>这个符号并没有sudo的权限,我们可以使用

sudo sh -c "cat /dev/null > /var/log/wtmp "
sudo bash -c "cat /dev/null > /var/log/wtmp"



让整个命令都具有sudo的权限执行

/dev/null这个东西可以理解为一个黑洞,里面是空的(可以用cat命令看一看),什么东西都可以往里面扔,扔了就没了

vim cleanlog.sh

#!/bin/bash
LOG_DIR=/var/log
cd $LOG_DIR
cat /dev/null > wtmp
echo "logs cleaned up."
exit

执行

由于脚本中含有对系统日志文件内容的清除操作,这要求要有管理员权限.不然会报permission denide错误

使用sudo命令调用管理员权限才能执行成功:

$ sudo ./cleanlogs.sh

#!/bin/bash这一行是表示使用/bin/bash作为脚本的解释器,这行要放在脚本的行首并且不要省略
脚本正文中以#号开头的行都是注释语句,这些行在脚本的实际执行过程中不会被执行。这些注释语句能方便我们在脚本中做一些注释或标记,让脚本更具可读性。

为什么cleanlogs.sh可以将log文件清除?
因为/dev/null ,里面是空的,什么东西都可以往里面扔,扔了就没了




vim test2.sh

#!/bin/bash
echo "Hello";echo "World";
filename=ttt.sh
if [ -e "$filename" ];then
    echo "File $filename exists";cp $filename $filename.bak
else
    echo "File $filename not found";touch $filename
fi;

vim test3.sh

#!/bin/bash
varname=b
case $varname in
[a-z]) 
    echo "abc"
    ;;
[0-9]) 
    echo "123"
    ;;
esac;


反引号(`)
1.命令替换
反引号中的命令会优先执行,如:

$ cp `mkdir back` test.sh back
$ ls

先创建了 back 目录,然后复制 test.sh 到 back 目录


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学