note:所有编写的shell程序,其文件名的结尾请以sh命名,便于分辨这是一个shell脚本
1. 指定执行所编写程序的shell
#! /bin/bash #这里使用bash这种shell,要给出指定shell的绝对路径 ,只有第一行的第一个#具有此功能,其余#都表示一般注释
2. 执行编写的程序
方法一:把要执行程序的绝对路径添加到系统环境变量PATH中
方法二:直接给出要执行程序绝对路径
方法三:sh 要执行程序的名称
3. 调用变量
- 可以调用的变量包括环境变量和用户变量
- 环境变量指由系统保有和维护的一组变量,记录着系统的一些信息,这些变量的变量名一般都是全部大写字母,用set可以显示当前的全部环境变量
- 用户变量指由用户自己定义的变量,基本语法为
变量名=变量值
,等号两边均不能空格- 对环境变量和用户变量的调用均通过在变量名前加上$来实现
4. 显示信息
- 在shell中,信息的显示(打印)主要通过echo来实现,以下主要介绍echo的用法
echo It is a test #打印文本
echo "It is a test" #打印字符串
echo $变量名 #打印变量值
echo "The number is $变量名" #在输出的字符串中调用变量,虽然这些变量在双引号内,但这些变量依然可以被调用
echo -n "The number is: " #参数-n表示输出不换行,即接下来的输出和此处的输出处于同一行中
5. 变量传递
- 从某一命令的输出中提取结果并将其赋值给某个变量
- 方法一:使用反引号
aa=`date`
- 方法二:使用$来提取
aa=$(date)
6. 输出和输入重定向
6.1 输出重定向
- 方法一:使用>号
cat kk > cc
,查看kk的内容并将其存储在cc中- 方法二:使用>>号
cat kk >> cc
,查看kk的内容并将其添加到cc文件的文末
6.2 输入重定向
- 方法一:使用<号
cat < kk
,查看kk的内容- 方法二:使用<<号
cat <<EOF > kk
或者cat > kk << EOF
,从标准输入输入以EOF结尾的信息,查看此信息,并将此信息储存在kk中;EOF是End Of File的缩写,代表“文本结束符”,在实际输入时,EOF这三个字母可以换成任何字符,标准输出在EOF出现时(command中的EOF)开始,在第二个EOF(输入中的EOF)出现时结束;EOF本身不会被当成输入。此方法被成为“内联输入重定向“
- 向文件中写入内容的四种方法
cat << EOF > kk
从标准输入读入内容并写入kk中,如果kk存在则会覆盖kk中原有内容;如果kk不存在则会创建kk并写入内容cat << EOF >> kk
从标准输入读入内容并写入kk中,如果kk存在则会添加新内容到kk的文末;如果kk不存在则会创建kk并写入内容cat > kk << EOF
从标准输入读入内容并写入kk中,如果kk存在则会覆盖kk中原有内容;如果kk不存在则会创建kk并写入内容cat >>kk << EOF
从标准输入读入内容并写入kk中,如果kk存在则会添加新内容到kk的文末;如果kk不存在则会创建kk并写入内容
7. 管道和进程替换
- 这两个操作的目的都是把一个(或多个)命令的输出传递给另一个命令
进程替换
- 把一个或多个进程的结果同时传递给同一个命令
sort <(ll .) <(ll ..) <(ll ../..)
分别查看三级目录,将这三个结果输出到同一个文件中(在文件中的顺序和command中的顺序一致,左边在上,右边在下),并对这个文件中的内容进行排序- 注意:需要被传递结果的command需要被放置在圆括号内;圆括号之前要加上<表示输出的定向;圆括号和<之间不能有空格
8. 数学运算
- 使用[ ]可进行简单的数学运算,aa=$[1+6]
9. 退出脚本
- 脚本在执行结束后,会自动退出,并会生成一个退出状态码,这是一个介于0-255之间的整数,这个退出状态码在Linux中由环境变量$?表示,可由
echo $?
进行查看
退出状态码.png- 为程序指定退出状态码:
exit 5
,此处指定退出状态码为5- 如果不指定退出状态码,程序会以最后一个命令的退出状态码退出
网友评论