Q在 Linux 中执行 Shell 脚本前,需要检查哪些基本条件?如果我拿到一个 shell 脚本,想在 Linux 上直接运行,应该先确认哪些信息,避免执行失败?
A运行前需要确认脚本类型与权限
可以先查看脚本是否带有正确的解释器声明,例如是否以 #!/bin/bash 或 #!/bin/sh 开头。接着检查文件是否具备可执行权限,可以使用 chmod +x 脚本名 赋予权限。还要确认脚本内容是否来自可信来源,并了解脚本所依赖的命令是否已经安装在系统中。
QShell 脚本有哪些常见的运行方式?在 Linux 里,除了直接双击或点开脚本,还有哪些常用方法可以运行 shell 脚本?
A常见方式包括解释器执行和直接执行
Shell 脚本常见的运行方式有两种。一种是通过解释器执行,例如 bash 脚本名.sh 或 sh 脚本名.sh,这种方式不一定需要脚本拥有可执行权限。另一种是给脚本添加可执行权限后,使用 ./脚本名.sh 直接运行,这种方式要求脚本中有正确的解释器声明。
Q为什么有些脚本在终端里运行会报权限或找不到命令的错误?我明明已经有一个 shell 脚本了,运行时却提示权限不足或者命令不存在,这类问题一般怎么排查?
A常见原因是权限、路径或解释器设置不正确
如果出现权限不足,通常是脚本没有执行权限,可以用 chmod +x 进行修复。如果提示找不到命令,可能是脚本里调用的程序未安装,或者命令路径没有加入环境变量。若使用 ./脚本名.sh 运行失败,也要检查脚本开头是否指定了正确的解释器,以及文件路径是否输入正确。
Q如何在运行 shell 脚本时传递参数并在脚本中读取?我想让一个 shell 脚本根据不同输入执行不同逻辑,参数应该怎么传给脚本,脚本里又该怎么获取?
A可以在命令后直接追加参数并在脚本中读取
运行脚本时,可以把参数写在脚本名后面,例如 bash test.sh a b c。脚本内部可以使用 $1、$2、$3 读取对应位置的参数,$# 查看参数个数,$@ 获取全部参数。通过这种方式,一个脚本就能根据输入执行不同任务。