shell脚本可以简单理解为一个包含linux命令集合的文本(就是把在终端中敲得命令攒在一起,自动执行)
1)说明使用什么shell,(#! 约定标记, 告诉系统这个脚本需要什么解释器(shell)来执行)
#!/bin/bash
2)使用#注释
3)输出使用echo
echo $name
echo "hello world!"
4)变量(只能使用英文字母,数字和下划线,首个字符不能以数字开头)
a) 定义变量 (直接写名字即可,变量名和等号之间不能有空格)
#变量和等号之间不能有空格
name="hello"
i=10;
b) 使用变量(变量名前面加美元符号即可,也可以使用{}包住变量)
name="hello"
echo $name
echo ${name}
5)字符串 (可以用单引号,也可以用双引号,也可以不用引号)
#都能输出hello world
echo hello world
echo 'hello world'
echo "hello world"
双引号里可以有变量、有转义字符,单引号任何字符都会原样输出,变量无效
var=8
echo 'var value: $var'
echo "var value: $var"
#以下是输出
#var value: $var
#var value: 8
字符串操作(待写)
6)数组(待写)
7) shell中使用linux命令(直接使用)
mkdir ff
cp aa bb
8) 执行另一个脚本,并不影响当前运行 (使用 &)
echo "log files script!"
# shell_2.sh 后台执行
./shell_2.sh &
echo "start exe"
/AAA
#或者将{}内后台执行
{
echo "test!"
/BBB
}&
9) 替换命令 -- $( )
与` `
(反引号) (先完成引号里的命令,然后将其结果输出来)
#path保存当前路径
path=$(pwd)
#或者
path=`pwd`
10) 循环
a=1
until [ ! $a -lt 100 ]
do
#16进制打印 `printf "0x%02x\n" ${a}`
echo start address $a `printf "0x%02x\n" ${a}`
# do something
a=`expr $a + 1`
done
#死循环
while :
do
# do something
done
11) if 语句
#结束使用fi, 条件使用[]
if [ ${a} -eq 0 ]
then
echo "1111111111!"
elif [ ${a} -gt ${b} ]
then
echo "2222222222!"
else
echo "3333333333!"
fi
12) 运行脚本时传入参数
echo "参数个数: $#"
echo "第一个参数: $0"
echo "第二个参数: $1"
echo "第三个参数: $2"
echo "第四个参数: $3"
./ shell_1.sh hello world !
#输出:
参数个数: 3
第一个参数: ./shell_1.sh
第二个参数: hello
第三个参数: world
第四个参数: !