Shell语法
echo输出
# 输出
hy@ubuntu:~$ echo hello
hello
# 输出多行
hy@ubuntu:~$ echo "hello
> world"
hello
world
# -e 解释转义字符
hy@ubuntu:~$ echo "hello\nworld"
hello\nworld
hy@ubuntu:~$ echo -e "hello\nworld"
hello
world
# 当命令较长时,可以用`/`将参数多行输出
hy@ubuntu:~$ echo hello \
> world
hello world
# `/`转义特殊变量(&,$,*)
hy@ubuntu:~$ echo $100
00
hy@ubuntu:~$ echo \$100
$100
变量
环境变量
# 显示所有环境变量
env
自定义变量
只有当前shell有效
# 创建变量
hy@ubuntu:~$ a=123
hy@ubuntu:~$ b="hello shell"
hy@ubuntu:~$ echo a
a
# 读取变量
hy@ubuntu:~$ echo $a
123
hy@ubuntu:~$ echo $b
hello shell
# 未命名的变量默认为null
hy@ubuntu:~$ echo $c
hy@ubuntu:~$
export输出变量
用户创建的变量仅可用于当前 Shell,子 Shell 默认读取不到父 Shell 定义的变量。为了把变量传递给子 Shell,需要使用export命令。且子shell不会影响到夫shell
hy@ubuntu:~$ name=huyuan
hy@ubuntu:~$ echo $name
huyuan
# 进入子shell
hy@ubuntu:~$ bash
# 继承父shell的变量
hy@ubuntu:~$ echo $name
huyuan
# 修改变量
hy@ubuntu:~$ name=wangyi
hy@ubuntu:~$ echo $name
wangyi
# 退出子shell,不会影响夫shell
hy@ubuntu:~$ exit
exit
hy@ubuntu:~$ echo $name
huyuan
算数操作
# (()) 算数操作
# 整数的运算
hy@ubuntu:~$ foo=$((5+2))
hy@ubuntu:~$ echo $foo
7
hy@ubuntu:~$ echo $((5/2))
2
hy@ubuntu:~$ echo $((foo+2))
9
# 位运算
hy@ubuntu:~$ echo $((foo>>2))
1
# 逻辑运算
hy@ubuntu:~$ echo $((1>=2))
0
hy@ubuntu:~$ echo $((foo==7))
1
if结构
#!/bin/bash
echo "please input a value"
read value
if [ $value == "1" ]; then
echo "1"
elif [ $value == "2" ]; then
echo "2"
else
echo "text is other"
fi
while循环
#!/bin/bash
n=1
while [ $n -le 10 ]
do
echo $n
let n++
done
函数
#!/bin/bash
fn() {
echo "name:" $1
echo "age:" $2
}
fn huyuan 20
结果
hy@ubuntu:~$ ./3.sh
name: huyuan
age: 20
数组
#!/bin/bash
arr=(1 a)
echo ${arr[0]}
echo ${arr[1]}
shell脚本
脚本开头
#!/bin/bash
脚本参数
script.sh w1 w2
$0:脚本参数名,即script.sh
$1-$9:对应脚本后面的参数,即w1,w2..
getopts解析命令行参数
#!/bin/sh
while getopts ab: OPTION;do
case $OPTION in
a)
echo "get option a"
;;
b)
echo "get option b and parameter is $OPTARG"
;;
?)
echo "get a non option $OPTARG and OPTION is $OPTION"
;;
esac
done
运行
hy@ubuntu:~$ ./1.sh -a -b huyuan
get option a
get option b and parameter is huyuan
hy@ubuntu:~$ ./1.sh -c
Illegal option -c
get a non option and OPTION is ?
read读取用户输入
#!/bin/bash
echo "please input >>"
read text
echo "you input $text"
结果
please input >>
hello
you input hello

浙公网安备 33010602011771号