Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。
shell脚本格式要求:
#!/bin/bash
开头#!/bin/bash
# 定义变量(注意=号两端不能有空格)
city=qingdao
echo $city
name='张三'
echo $name
job="开发"
echo $job
# 使用变量,推荐加花括号{}
echo "我是一名${job}工程师"
# 单引号和双引号的区别
echo 'My name is ${name}' # 输出 My name is ${name}
echo "My name is ${name}" # 输出 My name is 张三
Shell 中的变量分为系统变量和用户自定义变量。系统变量:\$HOME、\$PWD、\$SHELL、\$USER 等等,比如: echo $HOME 等等... 显示当前 shell 中所有变量:set
定义变量的规则:
将命令的返回值赋给变量:
#反引号里面的命令,会把运行结果赋值给变量A
A=`date`
#等价于反引号
A=$(date)
export 变量名=变量值 (将 shell 变量输出为环境变量/全局变量) source 配置文件(让修改后的配置信息立即生效) echo $变量名(查询环境变量的值)
当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。一个简单的例子 simple.sh
#!/bin/bash
v1=$1
v2=$2
echo ${v1}
echo ${v2}
echo $3
执行 ./simple.sh hello world again
,输出
hello
world
again
\$n (n 为数字,\$0 代表命令本身,\$1-\$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}) \$# (代表命令行中所有参数的个数) \$* (代表命令行中所有的参数,\$*把所有的参数看成一个整体) \$\@ (代表命令行中所有的参数,不过\$@把每个参数区分对待)
# $* 和 $@ 的区别:
# 此时它俩没有区别
for var in $*
do
echo $var
done
echo $*
echo $@
#
一个简单的例子 simple.sh
#!/bin/bash
v1=$1
if [$v1 -eq '']; then
echo '输入为空'
fi
执行 ./simple.sh
,输出结果:
输入为空
多条件分支
#!/bin/bash
v1=$1
## 中括号和内部表达式必须有空格分隔
if [ $v1 -eq '' ]; then
echo "输入为空"
else
echo "输入${v1}"
fi