乙巳🐍蛇年

acc8226 的博客

变量定义

1.概念
变量的名字就是变量保存值的地方。引用变量的值就叫做变量替换。

如果 variable 是一个变量的名字,那么 $variable 就是引用这个变量的值,即这变量所包含的数据。

variable 事实上只是 variable事实上只是{variable} 的简写形式。在某些上下文中 variable 可能会引起错误,这时候你就需要用 variable可能会引起错误,这时候你就需要用{variable} 了。

2.定义变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: myname=“shiyanlou”

注意

变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:

首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用 bash 里的关键字(可用 help 命令查看保留关键字)。
除了直接赋值,还可以用语句给变量赋值,如:for file in ls /etc

阅读全文 »

清空日志

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

# 初始化一个变量
LOG_DIR=/var/log

cd $LOG_DIR

cat /dev/null > wtmp

echo "Logs cleaned up."

exit

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 文件的内容。

阅读全文 »

if else

和 Java、PHP 等语言不一样,sh的流程控制不可为空

在 sh/bash 里可不能这么写,如果 else 分支没有语句执行,就不要写这个else。

1.if

if 语句语法格式:

1
2
3
4
5
6
7
if condition
then
command1
command2
...
commandN
fi
阅读全文 »

一、注释(#)
行首以 # 开头(除#!之外)的是注释。#!是用于指定当前脚本的解释器,我们这里为bash,且应该指明完整路径,所以为/bin/bash

当然,在 echo 中转义的 # 是不能作为注释的:

1
vim test.sh

输入如下代码,并保存。(中文为注释,不需要输入)

1
2
3
4
5
6
#!/bin/bash
echo "The # here does not begin a comment."
echo 'The # here does not begin a comment.'
echo The \# here does not begin a comment.
echo The # 这里开始一个注释
echo $(( 2#101011 )) # 数制转换(使用二进制表示),不是一个注释,双括号表示对于数字的处理
阅读全文 »

1
vim test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
echo "a == b"
fi
if [ $a != $b ]
then
echo "a != b"
fi
阅读全文 »
0%