目录
1、echo " hello world"
2、date +%Y%m%d %H:%M:%S
3、变量:var1=123 echo $var1
4、变量嵌套 $($()):
var6=$(tar zcvf test.tar.gz $(find -name test.sh)) ;echo $var6
5 、shell中单引号和双引号区别
(1)' '在单引号中所有的字符包括特殊字符($,'',`和\)都将解释成字符本身而成为普通字符。
(2)" " 在双引号中,除了$, '', `和\以外所有的字符都解释成字符本身,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义
注:\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。如:echo $var1 和echo \$var1
6、给变量值赋于多个单词,需要使用单引号和双引号
7、赋值时单引号和双引号的区别:
单引号之间的内容原封不动赋值给变量,
双引号之间的内容如有特殊符号会保留它的特殊含义
8、删除变量:unset var1
9、环境变量:
在bash shell中,环境变量分为两类:全局变量和局部变量
全局变量:对于shell会话和所有的子shell都是可见的, export var1=123,可以在当前用户的任意shell下使用。此操作非永久生效,如果需要,设置profile中
局部变量: 它只在自己的进程当中使用 var1=123
10、配置文件加载顺序
[root@xuegod63 ~]# echo 'echo /etc/profile ' >> /etc/profile [root@xuegod63 ~]# echo 'echo /etc/bashrc' >> /etc/bashrc [root@xuegod63 ~]# echo 'echo /root/.bashrc ' >> /root/.bashrc [root@xuegod63 ~]# echo 'echo /root/.bash_profile ' >> /root/.bash_profile [root@xuegod63 ~]# ssh root@192.168.1.63 #弹出以下信息,就知道有优先级了 /etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile
11、执行一个脚本test.sh的权限
(1)如果test.sh没有+x权限,可以使用sh test.sh 或bash bash.sh或source backup.sh (2)如果test.sh 有+x权限,可以使用(1)中所有命令,同时可以使用./test.sh,或PATH=/data/test.sh:$PATH后,直接在任意目录下执行test.sh
12、shell位置变量
Shell解释执行用户的命令时,将命令行的第一个字符作为命令名,而其它字符作为参数。
(1)$0 获取当前执行shell脚本的文件文件名,包括脚本路径,命令本身
(2)$n 获取当前脚本的第n个参数 n=1,2.....n 当n大于9时 用${10}表示。
使用场景:[oracle@localhost data]$ /etc/init.d/network start
13、 特殊变量
有些变量是一开始执行Script脚本时就会设定,且不能被修改,但我们不叫它只读的系统变量,而叫它特殊变量。这些变量当一执行程序时就有了,以下是一些特殊变量:
$* | 以一个单字符串显示所有向脚本传递的参数;
如"$*"用【"】括起来的情况、以"$1 $2 … $n"的形式输出所有参数 |
$# | 传递到脚本的参数个数 |
$$ | 当前进程的进程号PID |
$? | 显示最后命令的退出状态;0表示没有错误,其他任何值表明有错误 |
$! | 后台运行的最后一个进程的进程号pid |
例子:
[root@xuegod63 ~]# vim special_variable.sh #写入以一下内容 #!/bin/bash echo "$* 表示这个程序的所有参数 " echo "$# 表示这个程序的参数个数" echo "$$ 表示程序的进程ID " touch /tmp/b.txt & echo "$! 执行上一个后台指令的PID" echo "$$ 表示程序的进程ID " echo "$? 表示上一个程序执行返回结果 " [root@xuegod63 ~]# bash special_variable.sh 11 22 33 44 55 11 22 33 44 55 表示这个程序的所有参数 11 22 33 44 55 表示这个程序的所有参数 5 表示这个程序的参数个数 45502 表程序的进程ID 45504 执行上一个后台指令的PID 45502 表程序的进程ID 0 表示上一个程序执行返回结果
14、数字变量
(1) expr命令:对数字的基本计算,做比较时,输出结果假为0,1为真;特殊符号用转义符
[root@xuegod63 ~]# expr 2 \> 5 0 [root@xuegod63 ~]# expr 6 \> 5 1 对字符串的处理
[root@xuegod63 ~]# expr length "ni hao" 6
(2)使用$(())
[root@localhost ~]# b=$((1+4)) [root@localhost ~]# echo $b 5 [root@localhost ~]# ((a=1+4)) [root@localhost ~]# echo $a 5
格式:$((表达式1,表达2))
特点:
1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。a++ 等价于 a=a+1
2、在双括号结构中,所有变量可以不加入:“$”符号前缀。
3、双括号可以进行逻辑运算,四则运算
4、双括号结构 扩展了for,while,if条件测试运算
5、支持多个表达式运算,各个表达式之间用“,”分开
常用的算数运算符
运算符 | 意义 |
++ -- | 递增及递减,可前置也可以后置 |
+ - ! ~ | 一元运算的正负号 逻辑与取反 |
+ - * / % | 加减乘除与余数 |
< <= > >= | 比较大小符号 |
15、
文章评论