- shell变量
-
使用大写字母表示常量: 习惯上,常量的变量名通常使在shell编程中,变量是用于存储数据值得名称
定义变量时,变量名不加美元符号($,只有PHP语言中变量需要)
Yur_name=”runoob”
变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。
不能以数字开头: 变量名不能以数字开头,但可以包含数字。
避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
用大写字母,例如 PI=3.14。
避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数
- 运行shell脚本的方法有两种:
-
作为可执行程序运行
作为解释器参数运行
- shell脚本编写,创建一个文件test.sh,进入存放文件的目录
-
[root@zabbix-s-76 pud]# cat test.sh #!/bin/bash # #******************************************************************** #Author: guomc #QQ: 2934339867 #Date: 2024-03-04 15:47:53 #FileName: test.sh #URL: https://xxx.blog #Description: For personal learning Bash #Copyright (C): 2024 All rights reserved #******************************************************************** echo "Hello world"
- test.sh输出结果:
-
[root@zabbix-s-76 pud]# bash test.sh
Hello world
- Shell脚本中的注释是提前设置好的在~/.vimrc里面进行配置。
-
set nu set cul set tabstop=2 set expandtab set shiftwidth=2 set ai set softtabstop=2 map <F2> :set paste <CR> o map <F3> :set expandtab <CR> :%retab! <CR> :wq! <CR> map <F4> :set binary <CR> :set noendofline <CR> :wq! <CR> autocmd BufNewFile *.sh exec ":call SetTitle()" function SetTitle() if expand("%:e") == 'sh' call setline(1,"#!/bin/bash") call setline(2,"#") call setline(3,"#********************************************************************") call setline(4,"#Author: guomc") call setline(5,"#QQ: 2934339867") call setline(6,"#Date: ".strftime("%Y-%m-%d %H:%M:%S")) call setline(7,"#FileName: ".expand("%")) call setline(8,"#URL: https://xxx.blog") call setline(9,"#Description: For personal learning Bash") call setline(10,"#Copyright (C): ".strftime("%Y")." All rights reserved") call setline(11,"#********************************************************************") call setline(12,"") endif endfunc autocmd BufNewFile * normal G
<<EOF
注释内容
注释的内容
想要注释的代码
EOF
- 当作为可执行程序运行时,要赋予脚本执行权限
-
Chmod +X test.sh
./test.sh #在当前目录下执行程序
-
shell注释
-
(1)单行注释:和python注释相同,以#号开头作为单行注释
#这是一个注释 #autohor:ohuohuoo #date:`date`
- 多行注释:如果在开发过程中,遇到大段的代码需要注释起来,
-
过一会又要取消,可以将其定义为一个花括号的注释函数
<<EOF
注释内容
注释的内容
想要注释的代码
EOF
#EOF可以更换为其他符号
<<E
zhushi
zhushi
zhushi
E
- shell编写的基本步骤
- 建立shell文件
-
赋予shell文件可执行程序权限(使用chmod命令修改权限)
执行shell文件(直接运行赋予权限后的二进制文件)
- Shell变量,命名变量
-
shell变量都是直接定义的,变量的值都解释为一串字符
-
Cout=1 #定义变量 Name=”ohuo” #定义变量 echo $cout #取变量的值 echo $name #取变量的值
shell中,英文符号$ 用于取变量值
-
<<EOF 注释内容 注释的内容 想要注释的代码 EOF cout=1 echo $cout
Shell编程中需要注意的点:其中的变量的命名和其他语言一样,要遵循其中的规则
- 命名只能使用英文字母,数字和下划线,首个字母不能以数字开头
- 中间不能有空格,可以使用下划线
- 不能使用标点符号
- 不能使用bash里的关键字,(关键字是bash中使用的命令如:if fi 循环)
-
有效的命令:
- NAME LIb_kask _var var2
-
无效的命令:
- ?Var=123 user*NAME=ohjs
-
如果在变量中使用系统命令需要加命令符号“`”ESc 键下
-
DAJE1=`date` DAJE2=(date)
更换当前登录的shell脚本,把bash更换为zsh
-
chsh -s /bin/zsh # 然后输入密码1,进行重启后重新登录
- Export这个命令可以展示shell的环境变量
-
[root@zabbix-s-76 pud]# export declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus" declare -x DEBUGINFOD_URLS="https://debuginfod.centos.org/ " declare -x HISTCONTROL="ignoredups" declare -x HISTSIZE="1000" declare -x HOME="/root" declare -x HOSTNAME="zabbix-s-76" declare -x JAVA_HOME="/root/jdk1.8.0_401" declare -x LANG="zh_CN.UTF-8" declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s" declare -x LOGNAME="root"
设置shell环境变量
Echo $PATH 这个命令可以查看到变量的内容
其中的roc是自己创建的目录想要把一些路径添加到一个目录中的命令是:
export PATH=$PHTH: /home/roc/operation_tools
环境变量操作失误的话会使基础cat 、ls、yum ....等命令失效无法运行比如下面就是一个错误的示例:
$ export PATH=/home/to/operation_tools
缺少$PATH就会清空原来的$PATH的内容,其中没有了系统指定的路径Linux就无法找到命令,
正确的配置环境变量如下:
$ export PATH=$PATH: /home/to/operation_tools
Read命令是用来倾听标准的输入或文件输入,并把信息存入到变量中,
Read的主要职责是倾听键盘脚本如下:
#/bin/bash
echo -n “please input your name”
read name
echo “welcome !!! $name”
exit 0
Shell脚本中使用read可以直接使用自带的显示提示与功能,剩略程序中的echo语句:
#!/bin/bash
read -p “pelease input your name:” name
echo “welome !!! $name”
exit 0
上面脚本中read 的-p 选项就是用来显示提示语的。
定义变量
变量名=变量值
如:num=10
引用变量
$变量名
unset :清除变量值
从键盘获取read值:
#!/bin/bash
#
#********************************************************************
#Author: gu
#QQ:
#Date: 2024-03-11 19:33:29
#FileName: read.sh
#URL: https://xxx.blog
#Description: For personal learning Bash
#Copyright (C): 2024 All rights reserved
#********************************************************************
num=10
echo "num=$num"
echo "请输入num的值"
read num
echo "num=$num"
运行结果:
[root@zabbix-s-76 ~]# bash read.sh
num=10
请输入num的值
100
num=100
在输出的一行上加上-p,可以显示添加提示:
num=10
echo "num=$num"
read -p "请输入num的值:" num
echo "num=$num"
~
运行结果:
[root@zabbix-s-76 ~]# bash read.sh
num=10
请输入num的值:100
num=100
续!!!