本文介绍: Shell 是一种命令行解释器可以执行用户输入命令脚本,是操作系统用户之间接口。在 Unix 系统中,常见的 Shell 包括Sh、Bash、Zsh、Ksh 等等。在 Linux 系统中,Bash 是最常用的 Shell,也是默认的 Shell。Shell 也是一种脚本语言可以用来编写脚本文件(也称为 Shell 脚本),实现批量执行系列命令程序或其他脚本。Shell 脚本通常以.sh扩展名。上述代码第一行

一、什么shell

  Shell 是一种命令行解释器可以执行用户输入命令和脚本,是操作系统用户之间接口。在 Unix 系统中,常见的 Shell 包括Sh、Bash、Zsh、Ksh 等等。在 Linux 系统中,Bash 是最常用的 Shell,也是默认的 Shell。
  Shell 也是一种脚本语言可以用来编写本文件(也称为 Shell 脚本),实现批量执行系列命令、程序或其他脚本。Shell 脚本通常以 .sh扩展名。

#!/bin/bash

# 获取输入目录路径
read -p "请输入目录路径:" dir_path

# 检查目录是否存在
if [ ! -d "$dir_path" ]; then
  echo "目录存在!"
  exit 1
fi

# 列出目录下所有的文件和子目录
file_count=0
dir_count=0
for item in "$dir_path"/*; do
  if [ -f "$item" ]; then
    echo "文件$item"
    ((file_count++))
  elif [ -d "$item" ]; then
    echo "目录:$item"
    ((dir_count++))
  fi
done

# 统计文件和目录的数量
echo "目录 $dir_path 中共有 $file_count 个文件和 $dir_count 个子目录。"

上述代码第一行 #!/bin/bash一个特殊注释称为 Shebang 或 Hashbang用于指定脚本的解释器。在这个例子中,#!/bin/bash 表示该脚本需要使用 Bash 解释器来执行

直接调用脚本时,系统的程序载入器会分析 Shebang 后的内容,并根据其中的 Shebang 注释确定使用哪个程序或解释器来执行脚本。在这个例子中,操作系统使用 Bash 解释器来执行该脚本。

需要注意的是,Shebang 注释是可选的,如果不指定操作系统默认使用当前用户默认 Shell 解释器来执行脚本。但是,为了保证脚本的可移植性和可维护性建议在脚本文件中始终添加 Shebang 注释。并且,Shebang 注释必须放在脚本文件的第一行,否则将被忽略

参考链接Shell脚本中的shebang到底是什么

二、 shell脚本执行方式

执行 Shell 脚本的方式有以下几种

  1. 终端直接执行脚本文件:直接输入脚本文件的路径按下回车即可执行脚本。例如./script.sh需要注意的是,脚本文件必须具有执行权限
  2. 使用 bash 命令执行脚本文件:在终端中输入 bash 命令,后面跟上脚本文件的路径按下回车即可执行脚本。例如bash script.sh
  3. 使用 sh 命令执行脚本文件:在终端中输入 sh 命令,后面跟上脚本文件的路径,按下回车即可执行脚本。例如sh script.sh需要注意的是,使用 sh 命令执行脚本时,可能会因为不同的 Shell 解释器版本或者不同的系统环境导致脚本执行结果不同。
  4. 使用 source 命令运行脚本:在终端中输入 source. 命令,后面跟上脚本文件的路径,按下回车即可运行脚本。例如source script.sh. script.sh。使用 source 命令运行脚本时,脚本中定义变量函数会在当前 Shell 环境生效

这些方式区别在于执行脚本时所使用的解释器不同,可能会导致脚本的执行结果不同。例如,使用 bash 命令执行脚本时,会使用 Bash 解释器来执行脚本;而使用 sh 命令执行脚本时,则可能会使用系统默认的 Shell 解释器来执行脚本。此外,使用 source 命令运行脚本时,脚本中定义变量函数会在当前 Shell 环境中生效,而其他方式则不会。

参考链接

  1. Linux 下的source命令学习
  2. 执行 shell 脚本时,「source」、「. 」和「./」的区别

原文地址:https://blog.csdn.net/SGchi/article/details/131132092

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35536.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注