十一. [博学谷学习记录]|超强总结,用心分享|大数据 Linux(十一)

92 阅读2分钟

测试脚本****


脚本内容:test1.sh

#!/bin/bash

#!/bin/bash string**="I am shell" num=echo "a=num,string={num},string={string}"**

执行脚本

[root@node1 shell]# sh test1.sha=,string=I am shell

 

1.1.1.1. 变量的其他赋值方式****

1) 可以使用read关键字从键盘获取内容赋值给变量****

2) 可以通过(linux命令)或者(linux命令)或者linux命令来执行linux命令,并将命令的执行结果赋值给变量****


脚本内容:test2.sh

#!/bin/bash echo "who are you?" read name  #从键盘获取变量的值 pwd_string**=** **(pwd)**  #将当前的绝对路径赋值给pwd_string变量 date_string**=** **`date`**  #将当前时间赋值给date_string变量,注意这里使用的是反引号**echo** "hello, name" echo  pwdstring echo pwd_string** **echo**  **date_string 

执行脚本

[root@node1 shell]# sh test2.shwho are you?itcasthello, itcast/export/data/shell2020年 05月 10日 星期日 16:50:21 CST

 


1.1.1.1. 只读变量****

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

下面的例子尝试更改只读变量,结果报错:

test3.sh

#!/bin/bash myUrl**="www.google.com"**readonly myUrlmyUrl**=**"www.runoob.com"

 

运行脚本,结果如下:

/bin/sh: NAME: This variable is read only.

 

1.1.1.1. 删除变量****

使用 unset 命令可以删除变量。语法:

unset variable_name****

变量被删除后不能再次使用。unset 命令不能删除只读变量。

实例 :****

test4.sh

#!/bin/sh myUrl**="www.runoob.comunset myUrlecho**  $myUrl****

以上实例执行将没有任何输出。

1.1.1. 环境变量****

当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些变量,环境变量可以在/etc/profile中设置,环境变量的名字习惯上使用大写字母。

1.1.1.1. 常见的环境变量****

可以使用env命令查看所有的系统环境变量

[root@node1 shell]# envXDG_SESSION_ID=2HOSTNAME=node1SELINUX_ROLE_REQUESTED=TERM=xtermSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=192.168.88.5 8047 22CONDA_SHLVL=0SELINUX_USE_CURRENT_RANGE=SSH_TTY=/dev/pts/0USER=root

XDG_SESSION_ID=2

HOSTNAME=node1

SELINUX_ROLE_REQUESTED=

TERM=xterm

SHELL=/bin/bash

HISTSIZE=1000

SSH_CLIENT=192.168.88.5 8047 22

CONDA_SHLVL=0

SELINUX_USE_CURRENT_RANGE=

SSH_TTY=/dev/pts/0

USER=root

常见的环境变量:****

PATH 决定了shell将到哪些目录中寻找命令或程序 
HOME 当前用户主目录 
HISTSIZE 历史记录数 
LOGNAME 当前用户的登录名 
HOSTNAME 指主机的名称 
SHELL 当前用户Shell类型 
LANGUGE  语言相关的环境变量,多语言可以修改此环境变量 
MAIL 当前用户的邮件存放目录 
PS1 基本提示符,对于root用户是#,对于普通用户是$

 

1.1.1.1. 自定义环境变量****

1) vi /etc/profile ,在文件末尾加上要定义的环境变量,语法如下:

export 变量名=变量值****

export SERVICE_HOST**=www.itcast.cn**

 

1) wq 退出

2) source /etc/profile

3) 输入 env 查看环境变量,是否有自己定义的环境变量。

image.png

1) 使用环境变量

 环境变量的使用方式和普通变量是一样的: $环境变量名****

[root@node1 shell]# echo $SERVICE_HOSTwww.itcast.cn****

1.1.1. 特殊变量****

我们可以在执行 Shell 脚本时,向脚本传递参数,这时候可以使用特变变量来获取参数,Shell常用的特殊变量如下:

变量****解释****
$#命令行参数的个数
$n1表示第一个参数,1表示第一个参数,2表示第二个参数,以此类推
$0当前程序的名称
$?前一个命令或许或函数的返回码
$*以“参数1 参数2 。。。”形式保存所有参数
$@以“参数1”“参数2”。。。形式保存所有参数
$$本程序的(进程ID号)PID
$!上一个命令的PID