1 | ll |grep bash |
脚本的常用执行方式
1.第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)
2.第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
chmod 777 helloworld.sh
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
使用权限 : 所有使用者
八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
权限 rwx 二进制
- 常用系统变量
$HOME、$PWD、$SHELL、$USER等
自定义变量
1.基本语法
(1)定义变量:变量=值 等号两边没有空格
(2)撤销变量:unset 变量
(3)声明静态变量:readonly变量,注意:不能unset2.变量定义规则1
2
3
4
5[root@zhaokk ~]# readonly B=3
[root@zhaokk ~]# echo $B
3
[root@zhaokk ~]# unset B
-bash: unset: B: cannot unset: readonly variable
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
(2)等号两侧不能有空格
(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4)变量的值如果有空格,需要使用双引号或单引号括起来。可把变量提升为全局环境变量,可供其他Shell程序使用
export 变量名
特殊变量:$n
1.基本语法
$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}),脚本尽量不能超过5 - 4 特殊变量:$#
1.基本语法
$# (功能描述:获取所有输入参数个数,常用于循环) - 5 特殊变量:$、$@
1.基本语法
$ (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待) - 6 特殊变量:$?
1.基本语法
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)运算 expr 运算符间有空格1
2
3
4
5
6
7[root@zhaokk ~]# echo $?
127
[root@zhaokk ~]# ./helloword.sh
helloworld
[root@zhaokk ~]# echo $?
0
条件判断
1.基本语法
[ condition ](注意condition前后要有空格)
注意:条件非空即为true,[ atguigu ]返回true,[] 返回false。Shell工具(重点)1
2[ 23 -ge 22 ]
[atguigu@hadoop101 datas]$ echo $? 0 - 1 cut
cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。 - 基本用法
cut [选项参数] filename
说明:默认分隔符是制表符 - 选项参数说明
表1-55
选项参数 功能
-f 列号,提取第几列
-d 分隔符,按照指定分隔符分割列
1 | 由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一行只用键盘下键的话会是一个很痛苦的过程,还好有各种比较快捷的方法归我们使用: |
将passwd文件中的用户id增加数值1并输出
1 | awk -F : -v i=1 '{print $3+i}' passwd |
统计当月销量的最高TOP10
ETL
使用Linux命令查询file1中空行所在的行号
1 | [root@zhaokk ~]# awk '/^$/{print NR}' cut.txt |
Shell脚本里如何检查一个文件是否存在?如果不存在该如何处理?
1 | [root@zhaokk ~]# touch check.sh |