目录
前言
shell脚本存在的核心意义就在于基于shell命令简化甚至省略可避免的人工操作,通过各种控制流程结构以及正则表达式等方法,逐步实现自动化操作的整个过程,由此也可见,shell并没有面向对象的思想,类似C语言,毕竟C语言是操作系统或者说是内核的核心语言。
所以,语言并无优劣之分,只是每个人使用的习惯与方式不同,换句话说,难易的不是语言,而是思想与突如其来的灵感。
一、Here Document
1、概念
使用 I/O 重定向的方式将命令列表提供给交互式程序或命令,比如 ftp、cat 或 read 命令。
HereDocument是标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入。
2、命令格式
命令 <<标记
...
内容 #标记之间是传入内容
...
标记
3、注意事项
标记可以使用任意的合法字符;
结尾的标记一定要顶格写,前面不能有任何字符;
结尾的标记后面也不能有任何字符(包括空格);
开头的标记前后的空格会被省略 ;
4、用法
免交互方式实现对行数的统计,将要统计的内容置于标记"EOF"之间,直接将内容传给 wc -1 来统计。
wc -l <<EOF
> abc
> 123
> def
> EOF
3
5、通过 passwd 给用户设置密码
passwd lisi <<EOF
>abc1234
>abc1234 #这两行是输入的密码与确认密码
>EOF
6、变量替换
#!/bin/bash
file="EOF1.txt"
i="school"
cat > $file <<EOF
I am going to $i
EOF
cat EOF1.txt
7、变量设定
#! /bin/bash
var="Great! I am going to school!"
myvar=$(cat <<EOF
This is Line 1.
Today is Monday.
$var
EOF
)
echo "$myvar"
8、关闭变量替换功能
#!/bin/bash
var="Great! I am going to school!"
myvar=$(cat <<'EOF' #对标记加单引号,即可关闭变量替换
This is Line 1.
Today is Monday .
$var
EOF
)
echo $myvar