> 文章列表 > 【Shell】脚本

【Shell】脚本

【Shell】脚本

Shell脚本

  • 脚本格式
  • 第一个Shell脚本:hello.sh
  • 脚本常用执行方式
    • 1. bash或sh+脚本的相对路径或绝对路径
    • 2. 输入脚本的绝对路径或相对路径
    • 3. 在脚本的路径前加上.或者source

脚本格式

脚本以#!/bin/bash开头(指定解析器)

#! 是一个约定的标记,告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

第一个Shell脚本:hello.sh

需求:创建一个shell脚本,输出hello world!

root@ubuntu:/home/yys# mkdir scripts	#创建文件夹
root@ubuntu:/home/yys# cd scripts
root@ubuntu:/home/yys/scripts# touch hello.sh	#创建文件
root@ubuntu:/home/yys/scripts# vim hello.sh		#编辑文件

若出现如下报错:

The program 'vim' can be found in the following packages:* vim* vim-gnome* vim-tiny* vim-athena* vim-gtk* vim-nox
Try: sudo apt-get install <selected package>

解决方法

界面如下【Shell】脚本
输入

#!/bin/bash
echo "hello world!"

第一个Shell脚本就写好了,输入命令:wq保存并退出
若输入时出现报错E348:No string under cursor
解决方法

脚本常用执行方式

1. bash或sh+脚本的相对路径或绝对路径

当前目录下输入命令bash [filename]
【Shell】脚本
其他目录下,输入相对路径执行bash scripts/[filename]
【Shell】脚本
或使用绝对路径
【Shell】脚本

2. 输入脚本的绝对路径或相对路径

  1. 赋予脚本的+x权限
    chmod +x [filename]
    【Shell】脚本

有可执行权限时文件名变为绿色

  1. 执行脚本
    相对路径
    其中 . 指当前工作目录
    【Shell】脚本
    绝对路径
    【Shell】脚本

注意:必须具有可执行权限,即+x,否则报错
【Shell】脚本
查看文件权限的方法:输入命令ll [文件夹]
【Shell】脚本
如果在当前工作目录下有.sh文件,直接输入命令[filename].sh,shell会当作一条命令处理,会报错未找到命令,不能执行。
第一种方式相当于使用bash命令,开启一个bash进程,文件名相当于参数,本质是bash解析器执行脚本,所以脚本本身不需要执行权限;第二种方式实在当前的bash环境执行脚本,所以必须要有可执行权限。

3. 在脚本的路径前加上.或者source

【Shell】脚本
【Shell】脚本
source. 是bash shell的内部命令
【Shell】脚本
前两种方式是在当前shell打开一个子shell脚本来执行脚本内容,当脚本内容结束则关闭子shell,回到父shell中。

实例:
【Shell】脚本
61563是2493的子进程
【Shell】脚本
此时退出子进程

第三种方式可以使脚本内容在当前shell里执行,而无需打开子shell。这也是每次修改完/etc/profile后,需要source的原因。

两者的区别在于环境变量的继承关系,如在子shell中设置的当前变量,父shell是不可见的。