第八周学习总结

本周开始大数据的学习。

执行Shell脚本主要有两种方式:

#第一种:
#使用chmod命令,给脚本添加可执行权限
chmod +x ./hello.sh
#执行脚本
./hello.sh
#第二种:作为解释器的参数运行脚本呢
/bin/bash hello.sh
#或者
/bin/sh hello.sh

ps:使用第二种方式就不需要在脚本的第一行标记使用的解释器了

以 # 开头的行就是注释,会被解释器忽略。

shell变量的命名(变量名=值)

  1. 赋值“=”号两边不能有空格;
  2. 命名只能使用字母、数字、下划线且不能以数字开头;
  3. 不能使用标点符号;
  4. 不能使用bash中的关键字。

2.2 变量的使用

除了显式的标量赋值,还可以通过语句进行赋值,例如:

for file in `ls /etc`
或
for file in $(ls /etc)

循环遍历 /etc目录下的文件名。

ps:在shell中,"$" 和"`"(反引号,引用系统命令,包含的命令会被优先执行)的作用类似。

your_name="zhangsan"
echo $your_name
echo ${your_name}

使用"$"可以使用已经定义好的变量。花括号可用可不用,但为了代码的规范性,需要使用。即可以限定范围,代码也更具可读性。

myUrl="https://www.google.com"
readonly myUrl

使用关键字 readonly 定义只读变量,则变量的值不能够改变。

myUrl="https://www.runoob.com"
unset myUrl

使用关键字 unset 取消变量或函数的定义。

2.3 变量的类型

shell 中有四种类型的变量:用户自定义变量(局部变量)、环境变量、位置参数变量和预定义变量。

  • 用户自定义变量:在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量;
  • 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量。当一个 shell 脚本程序开始执行时,一些变量会根据环境设置中的值进行初始化,这些变量通常用大写字母做名字,以便与用户自定义变量做区分,被称为环境变量。环境变量可以在当前 shell 和这个 shell 的所有子 shell 中生效。如果把环境变量写入相应的配置文件(如 /etc/profile ),那么这个环境变量就会在所有的 shell 中生效。系统自带的环境变量的名字不可更改,但是值可以按需更改。用户也可以使用 export 命令在 shell 中自己创建环境变量。
  • 位置参数变量主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用也是固定的。主要有以下几种位置参数变量:
    • $1、$2、$3:脚本程序的参数,分别代表程序的第1个参数、第2个参数、... 程序第10个以上的参数需要用大括号包含,如 ${10};
    • $*:代表命令行中的所有参数。在一个变量中将所有参数列出,各参数之间用环境变量 IFS 中的第一个字符分隔开;
    • $@:和 $* 一样,也包含了命令行中的所有参数,使用时加引号,并在引号中返回每个参数,参数也是分开显示的;
    • 区别:$* 将所有的参数视为一个整体,而 $@ 将所有的参数分别视为单独的个体。一般来说,采用 $@ 来访问脚本程序的参数会比较好,不必担心 IFS 所设置的分隔符为空而导致各参数连在一起分不清楚。
  • 预定义变量是在 bash 中已经定义好了的变量,变量名不能自定义,变量作用也是固定的。实际上,位置参数变量就是预定义变量的一种。
    • $?:保存最后一次执行的命令的返回状态。如果 $? 的值为 0 ,则表明上一个命令成功执行;如果值非 0 ,则表明上一个命令没有成功执行;
    • $!:用于保存后运行的最后一个进程的 PID 号。

 

posted @ 2022-08-20 21:55  今天又双叒叕在敲代码  阅读(8)  评论(0编辑  收藏  举报