永发信息网

关于linux shell <<delimiter (此处文档)的用法

答案:1  悬赏:30  手机版
解决时间 2021-02-04 07:38
  • 提问者网友:火车头
  • 2021-02-03 08:30
#!/bin/bash
if [ -z "$1" ]
then
echo "Usage:`basename $0` filename"
exit 1
fi
vi $1 <<CLOUD
i
This is line 1
This is line 2
^[
zz
CLOUD
exit 0
谁能详细解释下这个脚本?
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-02-03 09:39
先判断"$1"(脚本的第一个参数)是否为空字符串,如果为空,说明运行脚本时没有带参数,给出正确用法提示。basename $0 用于获取脚本文件名(去除路径)。

vi $1 <<CLOUD
.....
CLOUD
这是“此处文档”(Here documents)用法,$1是用于vi编辑的文件名,两个CLOUD中间是输入的vi命令,依次解释如下:
i --> 从默认的vi命令模式进入vi编辑模式
This is line 1 --> 编辑输入的文本行内容
This is line 2 --> 编辑输入的文本行内容
^[ --> 一个特殊转义符用于返回命令行模式。写脚本时按ctrl+v再按<Esc>就能自动打出这个字符。
zz --> 将当前正在编辑的文件保存并退出vi

exit 1 和 exit 0 用于退出脚本并返回执行状态(shell中0代表true,非0代表false)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯