脚本经典用法及其案例详述,sudo命令使用详细讲

前言:在Linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神。虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加练习,总有一天也会成为得心应手的脚本大神。脚本在生产中的作用,想必小编我不说,大家也都知道,脚本写的6,可以省下很多复杂的操作,减轻自己的工作压力。好了,废话不多说,接下来,就是Bash脚本的用法展示。

本教程将介绍如何在Ubuntu 16.04和Ubuntu 17.04上禁用IPv6。 为什么要禁用IPv6? 虽然IPv6是下一代标准,但是现在许多系统和应用程序仍然依赖IPv4,并且可能对IPv6无法正常工作。

1、原因:
让普通用户具有root用户的权限
通过sudo执行的命令都会存在日志里面
2、用法
1、sudo -l 列出当前用户有哪些sudo权限

一、条件选择、判断

例如,如果存储库支持IPv6,则APT包管理器将通过IPv6连接到该存储库,无论您的ISP是否支持IPv6,如下面的屏幕截图所示。

图片 1

1、条件选择if

(1)用法格式

if 判断条件 1 ; then

  条件为真的分支代码

elif 判断条件 2 ; then

  条件为真的分支代码

elif 判断条件 3 ; then

  条件为真的分支代码

else

  以上条件都为假的分支代码

fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if。

(2)经典案例:

① 判断年纪

#!/bin/bash
read -p "Please input your age: " age
if [[ $age =~ [^0-9] ]] ;then
    echo "please input a int"
    exit 10
elif [ $age -ge 150 ];then
    echo "your age is wrong"
    exit 20
elif [ $age -gt 18 ];then
    echo "good good work,day day up"
else
    echo "good good study,day day up"
fi

 分析:请输入年纪,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否小于150,是否大于18。

② 判断分数

#!/bin/bash
read -p "Please input your score: " score
if [[ $score =~ [^0-9] ]] ;then
    echo "please input a int"
    exit 10
elif [ $score -gt 100 ];then
    echo "Your score is wrong"
    exit 20
elif [ $score -ge 85 ];then
    echo "Your score is very good"
elif [ $score -ge 60 ];then
    echo "Your score is soso"
else
    echo "You are loser"
fi

分析:请输入成绩,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否大于100,是否大于85,是否大于60。

图片 2

2、visudo -c 检查语法是否错误

2、条件判断 case

(1)用法格式

case $name in;

PART1)

  cmd

  ;;

PART2)

  cmd

  ;;

*)

  cmd

  ;;

esac

注意:case 支持glob 风格的通配符:

  *: 任意长度任意字符

  ?: 任意单个字符

  [] :指定范围内的任意单个字符

  a|b: a 或b

(2)案例:

判断yes or no

#!/bin/bash
read -p "Please input yes or no: " anw
case $anw in
[yY][eE][sS]|[yY])
    echo yes
    ;;
[nN][oO]|[nN])
    echo no
    ;;
*)
    echo false
    ;;
esac

 分析:请输入yes or no,回答Y/y、yes各种大小写组合为yes;回答N/n、No各种大小写组合为no。

有时,您需要在APT包中禁用IPv6,只有在需要时,其他程序可以继续使用IPv6。 要在APT中禁用IPv6,请运行以下命令为APT创建一个配置文件。

图片 3

二、四个循环

 在APT中禁用IPv6

有时,您需要在APT包中禁用IPv6,只有在需要时,其他程序可以继续使用IPv6。 要在APT中禁用IPv6,请运行以下命令为APT创建一个配置文件。

sudo nano /etc/apt/apt.conf.d/99force-ipv4

将以下行复制并粘贴到文件中。

Acquire::ForceIPv4 "true";

保存并关闭文件。 从现在起,APT将仅使用IPv4。

3、visudo 编辑/etc/sudoers 此工具的好处是在添加规则有误时,保存退出会提示给我们错误信息
    1)、为普通用户添加权限
   用户名 允许使用的主机=哪个用户的权限 执行什么命令(绝对路径)
   lan ALL=(ALL) /usr/bin/yum , /usr/sbin/useradd (后面跟多个命令时必须要加",")

1、for

(1)用法格式

① for name in 列表 ;do

  循环体

done

for (( exp1; exp2; exp3 )) ;do

  cmd

done

图片 4

exp1只执行一次,相当于在for里嵌了while 

③ 执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

列表的表示方法,可以glob 通配符,如{1..10} 、*.sh ;也可以变量引用,如: `seq 1 $name`

(2)案例

① 求出(1 2 ... n)的总和

sum=0
read -p "Please input a positive integer: " num
if [[ $num =~ [^0-9] ]] ;then    echo "input error"elif [[ $num -eq 0 ]] ;then
    echo "input error"else    for i in `seq 1 $num` ;do
        sum=$[$sum $i]
    done    echo $sumfi
unset zhi 

 分析:sum初始值为0,请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有判断是否为0,不为0进入for循环,i的范围为1~输入的数,每次的循环为sum=sum i,循环结束,最后输出sum的值。

② 求出(1 2 ... 100)的总和

for (( i=1,num=0;i<=100;i ));do
        [ $[i%2] -eq 1 ] && let sum =i
done
echo sum=$sum

分析:i=1,num=0;当i<=100,进入循环,若i&pide;2取余=1,则sum=sum i,i=i 1。

在Ubuntu上完全禁用IPv6

 

如果要在Ubuntu Linux系统上完全禁用IPv6,则需要对Linux内核参数进行一些更改。

编辑99-sysctl.conf文件。

sudo nano /etc/sysctl.d/99-sysctl.conf

复制并粘贴以下3行在文件的底部。

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

保存并关闭文件。 然后执行以下命令加载上述更改。

sudo sysctl -p

现在运行以下命令。 您应该看到1,这意味着IPv6已成功禁用。

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

图片 5

在重新启动后,99-sysctl.conf文件中定义的参数被保留,所以下次启动Ubuntu时不会启用IPv6,除非您手动重新启用它。

要在Ubuntu上重新启用IPv6,只需删除99-sysctl.conf文件中的3行,并运行sudo sysctl -p命令来加载更改。

OK! 我希望本教程帮助您在Ubuntu桌面和服务器上禁用IPv6。

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/148107.htm

图片 6

   图片 7

2、while

(1)用法格式

while 循环控制条件 ;do

  循环

done

 循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true” ,则执行一次循环;直到条件测试状态为“false” 终止循环

(2)特殊用法(遍历文件的每一行):

while read line; do控制变量初始化

  循环体

done < /PATH/FROM/SOMEFILE

cat /PATH/FROM/SOMEFILE | while read line; do

  循环体

done

依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

(3)案例:

① 100以内所有正奇数之和

sum=0
i=1while [ $i -le 100 ] ;doif [ $[$i%2] -ne 0 ];then
    let sum =i
    let i else
    let i fidoneecho "sum is $sum"

 分析:sum初始值为0,i的初始值为1;请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有当i<100时,进入循环,判断 i&pide;2取余 是否不为0,不为0时为奇数,sum=sum i,i 1,为0,i 1;循环结束,最后输出sum的值。

    2)、为用户组添加权限
   组前面加%

3、until 循环

(1)用法

unitl 循环条件 ;do

  循环

done

进入条件:循环条件为true ;退出条件:循环条件为false;刚好和while相反,所以不常用,用while就行。

(2)案例

监控xiaoming用户,登录就杀死

until pgrep -u xiaoming &> /dev/null ;do
        sleep 0.5
done
pkill -9 -u xiaoming

 分析:每隔0.5秒扫描,直到发现xiaoming用户登录,杀死这个进程,退出脚本,用于监控用户登录。

   图片 8

本文由ca88手机版登录发布于ca88手机版,转载请注明出处:脚本经典用法及其案例详述,sudo命令使用详细讲

TAG标签: ca88手机版登录
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。