l 测试脚本****
脚本内容:test1.sh
#!/bin/bash
| #!/bin/bash string**="I am shell" num=5 echo "a={string}"** |
|---|
执行脚本
| [root@node1 shell]# sh test1.sha=,string=I am shell |
|---|
1.1.1.1. 变量的其他赋值方式****
1) 可以使用read关键字从键盘获取内容赋值给变量****
2) 可以通过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 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.com" unset 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 查看环境变量,是否有自己定义的环境变量。
1) 使用环境变量
环境变量的使用方式和普通变量是一样的: $环境变量名****
| [root@node1 shell]# echo $SERVICE_HOSTwww.itcast.cn**** |
|---|
1.1.1. 特殊变量****
我们可以在执行 Shell 脚本时,向脚本传递参数,这时候可以使用特变变量来获取参数,Shell常用的特殊变量如下:
| 变量**** | 解释**** |
|---|---|
| $# | 命令行参数的个数 |
| $n | 2表示第二个参数,以此类推 |
| $0 | 当前程序的名称 |
| $? | 前一个命令或许或函数的返回码 |
| $* | 以“参数1 参数2 。。。”形式保存所有参数 |
|---|---|
| $@ | 以“参数1”“参数2”。。。形式保存所有参数 |
| $$ | 本程序的(进程ID号)PID |
| $! | 上一个命令的PID |