Bash-参数和变量
变量定义
1.概念
变量的名字就是变量保存值的地方。引用变量的值就叫做变量替换。
如果 variable 是一个变量的名字,那么 $variable 就是引用这个变量的值,即这变量所包含的数据。
variable 事实上只是 variable事实上只是{variable} 的简写形式。在某些上下文中 variable 可能会引起错误,这时候你就需要用 variable可能会引起错误,这时候你就需要用{variable} 了。
2.定义变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: myname=“shiyanlou”
注意
变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用 bash 里的关键字(可用 help 命令查看保留关键字)。
除了直接赋值,还可以用语句给变量赋值,如:for file in ls /etc
Bash 实例
清空日志
1 | #!/bin/bash |
cat /dev/null > wtmp
可以换为: > wtmp
遇到权限不够的提示,为什么,如何解决?
权限不够加 sudo 啊,可是你会发现sudo cat /dev/null > /var/log/wtmp 一样会提示权限不够,为什么呢?因为 sudo 只能让 cat 命令以 sudo 的权限执行,而对于>这个符号并没有 sudo 的权限,我们可以使用
sudo sh -c "cat /dev/null > /var/log/wtmp " 让整个命令都具有 sudo 的权限执行
为什么 cleanlogs.sh 可以将 log 文件清除?
因为/dev/null ,里面是空的,重定向到 /var/log/wtmp 文件后,就清空了 wtmp 文件的内容。
Bash 的流程控制
Bash 特殊字符
一、注释(#)
行首以 #
开头(除#!之外)的是注释。#!
是用于指定当前脚本的解释器,我们这里为bash,且应该指明完整路径,所以为/bin/bash
当然,在 echo 中转义的 # 是不能作为注释的:
1 | vim test.sh |
输入如下代码,并保存。(中文为注释,不需要输入)
1 | #!/bin/bash |