Shell学习笔记 ——第一天
1、程序第一行 指定执行Shell的程序
#!/bin/bash
#!用来告诉系统它后面的参数是用来执行该文件的程序
2、在控制台输出信息
echo "Hello Shell"
#!/bin/bash #向控制台输出信息 echo "Hello shell"
保存,退出!
3、使脚本可执行,需要在DOS窗口 执行如下命令
chmod +x fileName
4、执行脚本
./helloShell
5、变量的使用
Shell中,变量不用声明,直接用即可(类似于Lua),变量名和等号之间不能有空格
取出变量使用美元符号 $
#变量的使用 a="i am a variable" echo $a echo ${a}
使用花括号是为了防止变量与字符串相邻时,不确定变量是什么!如:$numth 与 ${num}th 前者取变量名为numth的变量,后者取变量名为num的变量。
变量类型有:局部变量(仅在当前实例中有效),环境变量,Shel变量
6、Shell常用命令
文件统计命令:wc –l fileName, wc -w fileName, wc -c fileName: 计算文件行数, 计算文件中的单词数, 计算文件中的字符数
文件拷贝: cp sourcefile destfile
重命名文件或移动文件: mv oldname newname
删除文件: rm file
文件中搜索字符串(支持正则表达式):grep 'str' fileName 会将搜索到的行输出到控制台
输出文件内容到屏幕上: cat fileName
获取用户输入: read varName 将用户输入,赋值给变量varName
将一个变量设置为只读变量:readonly varName 这时候如果更改变量就会报错
删除变量:unset -v varName (不加$)
7、字符串拼接
直接拼接,不需要任何连接字符,如变量var 与 "hello" 拼接
echo ${var}"hello"
8、获取字符串长度
${#var}
9、截取字符串
#截取字符串 从第三个截取到第四个 subStr=${a:2:2} echo $subStr
10、数组的使用
#数组 三种定义方式 注意,使用的是小括号 不是 花括号 arrayVar=("one" "two" "three" "four") arrayVar2=( "1" "2" "3" ) arrayVar3[0]="一" arrayVar3[1]="二" #使用时 下标从0开始 echo ${arrayVar[0]}${arrayVar[1]} echo ${arrayVar2[0]}${arrayVar2[1]} echo ${arrayVar3[0]}${arrayVar3[1]}
数组遍历
#数组遍历 for num in ${arrayVar[*]} do echo ${num} done
11、加减乘除 取余
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用
#运算符 num1=30 num2=9 #加减乘除 取余 两项之间,必须有空格 #expr 只能对整形计算 echo `expr ${num1} + ${num2}` echo `expr ${num1} - ${num2}` echo `expr ${num1} \* ${num2}` echo `expr ${num1} / ${num2}` echo `expr ${num1} % ${num2}` #浮点运算 result=`echo "5.0-1.8"|bc` echo "5.0-1.8="$result
12、数字比较 相等,大于,小于
#相等-eq 不等 -ne eq1=13 eq2=12 if [ $eq1 -eq $eq2 ] then echo "eq1 = eq2" else echo "eq1 != eq2" fi #大于-gt 小于 -lt if [ $eq1 -gt $eq2 ] then echo "eq1 > eq2" else echo "eq1 <= eq2" fi
13、布尔运算符
或-o 与-a 非!
#字符串比较 str1="abcd" str2="abcd" str3="abcder" #if 后面必须有空格,=作为判断是否相等时,两边必须有空格 [] 必须有空格 if [ $str1 = $str2 ] then echo "str1=str2" else echo "str1!=str2" fi #或-o 与-a 非! if [ $str1 = $str2 -a $eq1 = $eq2 ] then echo "true" else echo "false" fi
14、检测端口
netstat -ntpl|grep 8082