Linux入门:shell编程
来源:互联网 发布:海康威视有一个无网络 编辑:程序博客网 时间:2024/06/08 02:27
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
学习是一种态度,只要你有态度,学习将会是一种乐趣
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
shell 编程
变量
1、变量是以“$”开始的
2、变量分为:临时变量(只在shell中有效)和永久变量(在系统任何地方都可以执行,如:$SHELL)
3、变量名必须是由字母数字或下划线组成,且以字母或下横线开头
4、变量名一般为大写
5、变量的定义:变量名=‘值’,等号左右没有空格
NUM=100echo $NUM
100
TIME=`date` #可要将其它命令结果赋值给变量,可以用命令替换符(``),即反引号echo $TIME
Mon Nov 7 17:06:32 CST 2016
TIME=$(date +%F) #date与“+”之前必须要有空格,+和%F之间不能有空格echo $TIME
2016-11-07
DATE=$TIME #可以将一个变量赋值给另一个变量
ABC="$DATE" #变量可以被解释
ABC='$DATE' #变量不被解释,当字符串
位置变量和特殊变量
位置变量就是参数,参数都被叫做位置变量
ls -l file1 file2 file3#在位置变量中:ls -l是$0#在位置变量中:file1、file2就是位置参数$1、$2……$9#sh xxx.sh /etc #xxx.sh就是位置参数$0,/etc就是位置参数$1
特殊变量
$? #判断上一条命令执行是否成功,成功返回0,不成功返回非0$* #列出所有参数$$ #这个脚本的PID$! #执行上一个后台命令的PID$# #参数的个数$0 #这个脚本的名称
read
从键盘读入数据,赋值给变量
read first second third #read在等待用户数据的内容中,会依次将三个变量分别赋值给first、second、thirdsh -x #-x参数可以将脚本的执行过程展示出来,行首的“+”就是执行过程展示#赋值少于变量数,最后的将是空值;如果赋值多于变量娄,那么将多余的值都赋值给最后一个变量
expr
变量算术运算,对整数行进行数学运算,小数点以后不进行计算
expr 2 + 3expr 10 \* 3 #乘法需要用转义符
if语句
if [条件];then expelif [条件];then expelse [条件];then expfi
流程控制语句
-a #[a -a b]-o #[a -o b]#[-e file] 如果file文件存在则为真 #[-f file] 如果file存在且是一个普通文件则为真 #[-a file] 如果file存在则为真#[-d file] 如果file文件存在且是一个目录则为真 #-a 和 -o 操作允许分别使用逻辑 AND 和 OR 来合并表达式,而一元操作符 ! 则是对测试含义取反。
退出语句
exit 0 #正常退出 非0为非正常退出
for语句
for 变量 in 名字表do 命令列表done
case
case 变量 in 字符串1) 命令1 ;; 字符串2) 命令2 ;;esac#字符串1就会在shell中找对应的字符串1
while
while [ 条件 ] #如果条件为真,do中的命令一直会执行do 命令1 命令2done
shift
将脚本传递的参数依次进行递减,一般用于循环中
sh shift.sh 111 222 333shiftsh shift.sh 222 333shiftsh shift.sh 333#这样的话,就可以使用$1进行挨个提取参数,然后进行运算
函数
使脚本的可读性比较好
start(){ 命令1 命令2}#函数的调用,使用不带括号的函数名
例
#!/bin/bash/usr/sbin/service nginx start #系统命令必须是绝对路径
其它用户对脚本的执行权限
sh 脚本:
1、对脚本有r权限
2、对脚本所在目录的rx权限
脚本: #直接执行脚本
1、对脚本有rx权限
2、对脚本所在目录的rx权限
附
[root@bogon ~]# cat /etc/shells /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh
awk
awk是一个强大的文本分析工具
awk其实很复杂,这里只是简单提一下,在shell中会用到
awk -F: '$3==0 {print $1}' /ect/passwd awk -F: 'length($2)==0 {print $1}' /etc/shadow默认是使用空格作为分隔符,用“-F”指定“:”,就以“:”作为分隔符
踢出登录用户
pkill -kill -t pts/2 #踢出pts/2这个连接#还有一种踢出的方式,就是关闭这个用户的所有进程
非交互式设置用户密码
echo 123456 | passwd --stdin username#--stdin 从标准输入读取令牌(只有根用户才能进行此操作)
set
1、查看系统中定义的变量
2、删除变量使用unset NAME
附1
exit是一个库函数,exit(1)表示发生错误后退出程序, exit(0)表示正常退出。
对你的程序来说,没有区别。对使用你的程序的人或者程序来说,区别可就大了。
一般来说,exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为你的程序产生了一个错误。
以 shell 为例,在 shell 中调用完你的程序之后,用 echo $? 命令就可以看到你的程序的 exit 值。在 shell 脚本中,通常会根据上一个命令的 $? 值来进行一些流程控制。
附2
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
至于 ! 号那就是取非了
- Linux Shell编程入门
- linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- linux shell编程入门
- Linux shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- Linux Shell编程入门
- linux Shell编程入门
- Linux Shell编程入门
- php下POST json数据无法解析问题
- swift 学习笔记(17)-guard
- HDU 1173 采矿
- std::set/std::map 的几个为什么
- Linux之三剑客,awk、sed、grep的用法
- Linux入门:shell编程
- 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
- css下 让元素贴近容器的底部
- 编写程序将C / C++代码中的注释去掉
- Runtime简介
- Sark Sql读取hive数据
- Java 加密解密基础
- C++ 优化
- vb中line的用法