您的位置:首页 > 运维架构 > Shell

Shell学习笔记 ——第一天

2016-08-16 10:09 344 查看
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

  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: