In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-28 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >
Share
Shulou(Shulou.com)06/03 Report--
二 变量
5 位置参数变量
$0命令自己
$1 第一个参数
$2 第二个参数
$9 第九个参数
例2:输出位置参数变量,脚本后要接参数
#!/bin/bash
echo"the command is $0"
echo"canshu1 is $1"
echo"canshu2 is $2"
6 预定义变量
$? 上一个命令的返回值:0 上一个命令正确执行;非0 上一个命令不正确
$# 统计命令之后的参数个数
$* 返回所有参数
$n 位置参数变量
例3:输出预定义变量
#!/bin/bash
#名字为:canshu.sh
echo"canshu zongshu $#"
echo"canshu liebiao: $*"
echo $?
附:
对其赋予执行权限:chmod755 canshu.sh
执行:./canshu.sh2 2 3 4 5 6
7 键盘读取命令
read -p "提示信息" -t 等待时间 变量名
例子4:通过read读入变量值
#!/bin/bash
read-p "please input num1:" -t 30 test1
read-p "input num2:" -t 30 test2
sum=$(($test1 + $test2))
echo"num1 + num2 = $sum"
8 数值运算
变量值默认都是字符串型,要想进行数值运算。以下三种任选一种
1)declare方法
num1=123
num2=456
declare-i sum=$num1+$num2
2)sum=$(($num1 + $num2 )) #推荐
附:
$(): 说明括号里为系统命令,他会执行系统的命令
3)sum=$(expr$num1 + $num2) 注意+左右必须空格,不然会发生错误如:打印:123+456#字符串叠加
4)运算符
+ - \* / %取余
附:
shell编程的目的是为了减轻系统管理员的任务
shell脚本可能写不出漂亮的界面,但是他不是用来干这个的→ 各种编程语言都有他特殊的应用面,比如说C语言就比VB在数值计算方面更加精确,而VB则在界面方面比C更胜一筹
shutdown-r now #系统重启
三 shell中常用命令
1 行提取命令grep
选项: -v 反向选择
-n 提取时,显示行号
举例:
grep "[^a-z]hen" test.txt
oo前不是小写字母的行匹配。 注意:和开头没有关系
附:也可以结合以前的内容:grep-n "[^a-z]hen" test_rule.txt
中括号代表一个字母,^代表取反,a-z代表小写字母a到z
grep "\.$" test.txt
匹配以.结尾的行
附:在正则表达式中$代表行尾;
\ 代表转义符,表示,将其后紧跟字符的特殊含义消失!
Linux中行尾的空格附,也可以作为一个字符,一定要记住!这是一些脚本发生错误的原因!
grep "^[^A-Za-z]" test.txt
匹配不以字母开头的行 注意:所有字母不能这样写 A-z
附:
^在中括号外面代表行首
grep"^[^a-zA-Z]" test_rule.txt #这样也可以
grep "^$" test.txt
匹配空白行
grep "oo*" test.txt
匹配最少一个o
附:o*代表着*前面的这个o可以重复0到无数多次
还可以这样用:grep"hh*o" test_rule.txt
这样: grep"ooo" test_rule.txt
2 列提取命令
1) cut
cut -d "分隔符" -f 提取列 文件名
如:cut-d ":" -f 1,3 /etc/passwd
more/etc/passwd | grep "/bin/bash" | cut -d ":" -f1,3
提取passwd文件中可以登录的用户的用户名和UID
附:这里1,3之后就不用加文件名了
last 命令用于查看那个用户,在那个端口等信息下登录到系统,是一个日志命令
2) awk
awk '条件{动作}'
last| awk '{printf $1 "\t" $3 "\n"}' # $1代表第一列
提取last显示结果的第一和第三列
\t tab键
\n 换行
\r 回车
附:也可以是:last| awk '{printf $1 "\t" $3 "\t" $4 "\n"}'
last| grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"| awk '{printf $1 "\t" $3 "\n"}'
在last中提取包含ip的行,然后,再在行中提取第一和第三列
awk内置变量 FS 指定分隔符
more/etc/passwd | awk 'BEGIN {FS=":"} {printf $1 "\t"$3 "\n"}'
读取passwd文件,以":"为分隔符,截取第一和第三列
BEGIN 在截取前使分隔符生效。如果没有BEGIN,那么第一行自定义的分隔符不生效
6 echo命令
echo -e "输出内容"
-e 识别格式化打印内容
echo -e "1\t2\t3" 打印tab键
echo -e "\e[1;31m this is red text \e[0m" 输出红色字体
\e[ 格式标志
1;31m 指定颜色 #30到39之间的数字
0m 恢复颜色(重置)
附:30m=黑色,31m=红色,32m=绿色,33m=×××,34m=蓝色,35m=洋红, 36m=青色,37=白色
echo -e "\e[1;42 background \e[0m"
附:背景颜色:40=黑色,41=红色,42=绿色,43=×××,44=蓝色,45=洋红, 46=青色,47=白色
例子5:echo输出的小游戏
注: cat -A 文件名 显示文件隐,包括藏字符
取消dos文档的回车符,两种办法
1)dos2unix 文档名 #unix2dos 方向相反
2)vi -b 文档
:%s/^M//g ^M使用 ctrl+v+m 输入
例6:数据备份
#!/bin/bash
DAY=`date+%Y%m%d` # 反引号!!!
#定义日期变量
附:DAT=$(date+%F) # 更方便且更漂亮,打印出:2013-12-21
SIZE=`du-sh /var/lib/mysql`
#定义mysql目录大小的变量,``符号可以换成$()
附:sudodu -sh /etc/ # 统计/etc/目录的大小
echo"Date: $DAY" >> /tmp/dbinfo.txt
#把日期输入信息文档
echo"Data Size: $SIZE" >> /tmp/dbinfo.txt
#把大小输入信息文档
cd/opt/dbbak
#切换目录
tarzcf mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt
打包备份mysql目录,同时打包信息文档
附:在字母zc后加v会显示压缩过程
rm-f /tmp/dbinfo.txt
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.