shell学习笔记
来源:互联网 发布:linux ifconfig 找不到 编辑:程序博客网 时间:2024/06/16 01:07
注释:
单行用#,多行用
:<
#!bin/bashecho 'hello'#变量的声明:d="aaa"echo $d:<<!#语句声明变量for f in `ls /etc`do echo $fdone!
使用变量:
echo $f
或者用${ }来告诉解释器,变量的边界在哪里
for i in 12345do echo "list have ${i}"done#list have 12345
单引号,双引号,反引号
1)单引号括起来的字符都作为普通字符出现。
2)双引号括起来的字符,除$(美元符号)、\(反斜杠)、’(单引号)、和”(双引号)这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。
3)反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。
字符串拼接
name_1='xiao'name_2='cong ${name_1}'name_3="cong ${name_1}"name_4="cong "${name_1}""echo $name_1 $name_2 $name_3 $name_4#xiao cong ${name_1} cong xiao cong xiao
取字符串的长度
echo ${#name_1}#4
查询子字符串的索引
expr 求表达式变量的值。express表达
echo `expr index "string" r`#3echo `expr index $name_1 x`#1,索引是从1开始的!!!!
数组
以空格分隔!
取长度和字符串一样,在变量前加#
array_name=(1 q e 3 A [1,3,4])#取全部 1 q e 3 A [1,3,4]echo ${array_name[*]}echo ${array_name[@]}#取某一个[1,3,4]echo ${array_name[5]}a=${array_name[0]}echo $a#1#length,取所有数组的长度echo len=${#array_name[@]}echo len=${#array_name[*]}#one取单个元素的长度,7,包含符号echo ${#array_name[5]}
传递参数的实例:
#!/bin/bash#author:liecho "shell 传递参数的实例!"echo "第一个参数为: $1"echo "第一个参数为: $2"echo "参数的个数为: $#"echo "传递的参数作为字符串来显示: $*"
$ sh test2.sh 1 2shell 传递参数的实例!第一个参数为: 1第一个参数为: 2参数的个数为: 2传递的参数作为字符串来显示: 1 2
$* 以一个单字符串显示所有向脚本传递的参数。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
echo "--\$*演示 ---"for i in "$*";do echo $idoneecho "--\$@ 演示---"for i in "$@";do echo $idone
$ sh /cygdrive/c/Users/Administrator/Desktop/test2.sh 1 2 5--$*演示 ---1 2 5--$@ 演示---125
基本运算符
expr 求表达式变量的值。express表达
#+ - * / % == !=echo `expr 2 + 2`a=2b=3#乘号(*)前边必须加反斜杠(\)才能实现乘法运算;echo `expr $a \* $b`if [ $a == $b ]then echo "a等于b"fiif [ $a != $b ];then echo "a不等于b"fi
关系运算符
- 关系运算符只支持数字,除非字符串的值是数字。
- -eq,比较是否相等,相等返回true.
-eq : 是否相等
-ne : 是否不相等
-gt : 大于
-lt : 小于
-ge : 大于等于
-le : 小于等于
if [ $a -eq $b ];then echo "a等于b"elif [ $a -gt $b ];then echo "a大于b"else [ $a -lt $b ] echo "a小于b"fi
布尔运算符
!非运算
-a与运算
-o 或运算
这里写代码片
逻辑运算符
逻辑与&&,逻辑的and
逻辑或||,逻辑的or
#逻辑与 && 逻辑或||a=20b=50if [[ $a -gt 10 && $b -lt 40 ]]then echo "返回 true"else echo "返回 False"fi
文件测试运算符
-e 检测文件或目录是否存在
-d 检测文件是否是目录,[ -d $file ]
-f 检测文件是不是普通文件,既不是目录,也不是设备文件
-r -w -x 可读可写可执行
-s 检测文件是否为空
echo
转移字符用\
echo "\"It is a test\"""It is a test"
显示变量
read 命令从标准输入中读取一行,并把输入行的每个字段的值赋值给 shell 变量。
read aecho "$a is test"
换行符:
\n需要加开启转移 -e
echo -e "ok! \n"echo "ok"
ok!ok
不换号符\C
echo -e "ok! \c"echo "ok"
ok! ok
单引号不转移,原样输出
将输出,保存至文件,文件直接被新建
echo "ok!" > file$ cat fileok!
显示命令执行结果
echo data
test 命令用于检查某个条件是否成立
它可以进行数值、字符和文件三个方面的测试
*代码中的 [] 执行基本的算数运算
a=10b=20if test $[a+b] -eq $[b*2];then echo "a等于b"else echo "ab不相等"fi
字符串的比较测试
= 相等
!= 不等
-z 字符串长度为0 为真
-n 字符串长度不为0 则为真
a="111"b="sss"if test $a = $b;then echo "a等于b"else echo "ab不相等"fi
#ps -ef 全格式输出所有进程#grep -c xxx 统计匹配的行数#这条作用是用来判断ssh这个进程是否存在if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
流程控制
if 条件then commandfiif 条件then command1else command2fiif 条件;thenelif 条件;thenelsefi
for 条件do commanddone
while 条件do commanddone
#如果int小于等于5,那么条件返回真。int从0开始,每次循环处理时,int加1。int=0while ([ $int -le 5 ])do echo $int let "int++"done#这里比较表达式用[]包裹,#let 执行一个或多个命令#"int++"自增
无限循环
while :do commanddonewhile true:do command2done
until循环执行一系列命令直至条件为真时停止。
条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次—请注意这一点。
int=0until ([ $int -gt 5 ])do echo $int let "int++"done012345
case
echo '输入 1 到 4 之间的数字:'echo '你输入的数字为:'read aNumcase $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;;esac
- [Bash Shell] Shell学习笔记
- [Bash Shell] Shell学习笔记
- shell shell学习笔记001--什么是shell?
- shell学习笔记【原创】
- shell学习笔记2
- shell(bash)学习笔记
- Shell学习笔记
- shell学习笔记《一》
- Unix shell学习笔记
- shell编程学习笔记
- shell学习笔记
- Linux Shell学习笔记
- Shell学习笔记
- Power Shell 学习笔记
- Shell 编程-学习笔记
- shell编程学习笔记
- Shell学习笔记
- shell 学习笔记
- 关于微信wx.previewImage图片没有正常显示的问题
- jQuery 停止动画 stop()
- HDU6070 Lazy Running (最短路)
- Hive生产脚本常用参数设置[合并小文件,压缩文件,动态分区,数据倾斜...]
- Git基本操作
- shell学习笔记
- 处理vue-cli 打包第三方库时语法报错 Unexpected token: name (idSeed)
- Eclipse 安装GWT环境
- linux学习笔记(18)
- 浅谈javaScript中的闭包
- 详解C中volatile关键字
- Git与SVN的对比梳理
- 数据库导入的问题
- 数组