首页
Search
1
安装docker时报错container-selinux >= 2:2.74
124 阅读
2
rsync命令(可替代rm删除巨量文件)
101 阅读
3
docker 镜像加速器配置,daemon.json文件详解
90 阅读
4
使用国内镜像地址拉取k8s安装需要的images
79 阅读
5
Redhat 8版本安装ansible步骤
75 阅读
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
登录
Search
标签搜索
命令
nginx
Mingrui
累计撰写
64
篇文章
累计收到
0
条评论
首页
栏目
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
页面
搜索到
8
篇与
的结果
2024-09-19
脚本百例—3: 获取用户输入,并根据输入内容判断后续执行
编写choice函数,用以获取用户输入内容,本例中为获取yYnN,后面是三则函数调用案例,用以演示根据用户输入的内容,执行不同的操作。特别说明:关于read命令用read命令来读取用户输入,加上一个特殊选项可以关闭回显,这在提示用户输入密码等敏感信息时较为有用。read -s -p "Please enter your password: " PASSWD printf "%b" "\n" -s选项告诉read命令不要回显输入的字符(s代表silent),-p选项指明下一个参数是提示信息,会在读取用户输入之前显示因为read -s选项会关闭字符回显,而当禁止了回显功能,用户按下回车键时,就不会显示换行符,这就导致后续的输出就会和提示信息出现在同一行,这会造成版面上的混乱。用printf命令输出换行符,会将光标带到下一行。关于关闭回显,stty -echo也可以用来禁止输入密码时的屏幕回显。但使用该命令的一个问题是回显始终处于关闭状态,需要手动输入stty sane 来将其恢复#!/bin/bash #由用户选择并返回标准答案。 #默认值的处理方式及接下来怎么做,取决于主代码中choice函数之后的if/then分支 #调用方式: choice <prompt> #例如: choice "do you want to play a game?" #返回值:全局变量CHOICE function choice { CHOICE='' local prompt="$*" local answer read -p "$prompt" answer case $answer in [yY1]) CHOICE='y';; [nN0]) CHOICE='n';; *) CHOICE="$answer";; esac } #调用choice函数,提示并核实软件包的日期。如果已经设置$THISPACKAGE,则代码显示该日期,并要求用户核实。 #如果用户输入yY,或者直接按下回车键,就接受所显示的日期。 #如果用户输入新的日期,代码则再次循环,继续核实日期。 CHOICE='' until [ "$CHOICE" = "y" ];do printf "%b" "This package's date is $THISPACKAGE\n" >&2 choice "Is that correct?[y/,<new date>]:" if [ -z "$CHOICE" ];then CHOICE='y' elif [ $CHOICE != "y" ];then printf "%b" "Overriding $THISPACKAGE with $CHOICE\n" THISPACKAGE=$CHOICE fi done #调用choice函数,如果用户输入“n”(不区分大小写)之外的任何内容,则会看到错误日志 #如果用户输入“y”(不区分大小写)之外的任何内容,则看不到消息日志。 choice "Do you want to look at the error logfile? [Y/n]:" if [ $CHOICE != "n" ];then less error.log 2>/dev/null fi choice "Do you want to look at the message logfile?[y/N]:" if [ $CHOICE == "y" ];then less message.log 2>/dev/null fi #要求用户输入信息(有可能不存在任何输入) choice "Please enter your favorite ccolor,if you have one:" if [ -n "$CHOICE" ];then printf "%b" "you choice: $CHOICE\n" else printf "%b" "You do not have a favorite color.\n" fi
2024年09月19日
63 阅读
0 评论
0 点赞
2024-09-18
脚本百例—2:输出格式控制printf
[root@web1 ~]# printf '%s = %d\n' lines 24 lines = 24 [root@web1 ~]# printf '%-10.10s = %4.2f\n' 'Gigahertz' 1.92735 Gigahertz = 1.93 [root@web1 ~]# printf '%10.10s = %4.2f\n' 'Gigahertz' 1.92735 Gigahertz = 1.93 [root@web1 ~]# printf '%10.10s = %4.2f\n' 'Gigahertzaaa' 1.92735 Gigahertza = 1.93 [root@web1 ~]# printf '%10.10s = %4.2f\n' 'Gig' 1.92735 Gig = 1.93 [root@web1 ~]# printf '%-10.10s = %4.2f\n' 'Gig' 1.92735 Gig = 1.93说明:内建命令printf第一个参数是格式控制字符串,之后的参数都是根据格式规范(%)进行格式化。%和格式类型(s\f\d等)之间的数字提供了额外的格式化细节。对于浮点类型(f),第一个数字(4.2中的4)是整个字段的宽度,第二个数字(2)是应该在小数点右侧打印出的位数。(结果按四舍五入处理)对于字符串,第一个数字是字段的最大宽度,第二个数字是输出的字符数量。根据需要,字符串会被截断(长于max)或用空白填充(不足min)。如果指示符max和min相同,那么就可以确保字符串按照该长度输出。指示符左侧的-负号表示左对齐(在字段宽度内),如果不使用负号,则字符串向右对齐。
2024年09月18日
48 阅读
0 评论
0 点赞
2024-09-18
脚本百例—1:$-含义及解释
$-记录着当前设置的shell选项,himBh是默认值。可以通过set命令来设置或者取消一个选项配置。例如:set -x这个命令可以打开shell的调试开关,调试shell脚本非常有用。这个时候再检查$-变量的值,可以看到多了一个x字符。[root@web1 ~]# echo $- himxBH具体含义h:hashall:记录命令所在的路径,避免每次都要查询i:interactive:说明当前的shell是一个交互式的shellm:monitor mode 打开监控模式,可以控制进程的停止、继续,后台或者前台执行等。(ctrl+z命令,fg、bg命令)B:Brace expansion花括号扩展,可以让 bash生成任意字符串 的一种扩展功能,生成的字符串可以是不存在的路径或者文件。具体示例见文章后半部分。H:history expand:展开历史记录列表中的命令,可以通过“!”开完成,如!!返回最近执行的命令,!n返回第n个历史命令等。花括号扩展是一个非常有用的技巧,在某些场合可以省略长路径的重复输入,比如:[root@web1 mnt]# ls 1.txt [root@web1 mnt]# cp /mnt/1.txt{,.bak} [root@web1 mnt]# ls 1.txt 1.txt.bak格式一:preamble+{string1,string2,...stringN}+preamble注意;左右的花括号是必须的,中间的字符串列表由逗号隔开, 逗号前后不能有空格 ,如果string中有空格,需要使用单引号或双引号括起来。bash在实际扩展中,会将preamble和花括号中的所有字符串(按照从左到右的顺序)相连,最后加上postscript。花括号中间只有要有一个逗号,负责bash不认为这是花括号扩展。示例:[root@web1 ~]# echo sp{el,il,al} spel spil spal [root@web1 ~]# echo sp{el,il, al} sp{el,il, al} [root@web1 ~]# echo sp{el,il," al"} spel spil sp al [root@web1 ~]# echo sp{el,il," "al} spel spil sp al [root@web1 ~]# echo sp{,el,il,al} sp spel spil spal [root@web1 ~]# echo sp{,el,il,,al} sp spel spil sp spal [root@web1 ~]# echo sp{,el,il,,al}ps spps spelps spilps spps spalps格式二:preamble+{<start>..<end>[..<incr>]}+postscript其中..组合而成的表达式叫做序列表达式,表示一个特定的范围。当和是数字时,代表的是数字范围,当和是单个字母时,代表的是字符范围。(和必须同为数字或者字母,斗则bash不认为是花括号扩展,而是原样输出。)incr是可选项,代表的是区间范围的递增数,它必须是数字。示例:[root@web1 ~]# echo {1..10} 1 2 3 4 5 6 7 8 9 10 [root@web1 ~]# echo {10..1} 10 9 8 7 6 5 4 3 2 1 [root@web1 ~]# echo {a..g} a b c d e f g [root@web1 ~]# echo {a..g..2} a c e g [root@web1 ~]# echo {1..10..2} 1 3 5 7 9 [root@web1 ~]# echo {0..10..2} 0 2 4 6 8 10 [root@web1 ~]#如果是数字,可以通过在数字前面加0的方式使得输出结果的长度保持一致,比如:[root@web1 ~]# echo {00..10} 00 01 02 03 04 05 06 07 08 09 10 [root@web1 ~]# echo {010..10} 010 [root@web1 ~]# echo {001..10} 001 002 003 004 005 006 007 008 009 010
2024年09月18日
56 阅读
0 评论
0 点赞
1
2