如何在Shell脚本中执行命令?

时间:2020-02-23 14:43:58  来源:igfitidea点击:

Shell是一个命令行解释器,允许用户与系统进行交互。
它负责从用户那里获取输入并显示输出。

Shell脚本是按执行顺序编写的一系列命令。
这些脚本可以包含函数,循环,命令,变量。
脚本使用户可以轻松保存某些可能会被反复使用的代码序列。
Shell脚本也可以带有注释以提高可读性。

Shell脚本需要以扩展名.sh保存。

为了让Linux系统知道该文件是Shell脚本,该文件需要以shebang构造开头。

#!/bin/bash 
OR
#!/bin/sh

此后,脚本可以包含命令,函数,循环,条件检查等。

一个好的脚本总是包含使其可读的注释。

创建并运行基本的Shell脚本

可以使用vi,cat命令或者GUI中的常规文本编辑器来创建Shell脚本。

让我们使用vi创建基本的shell脚本

$vi basic_script.sh

这将带您到vi编辑器。
添加以下行:

#!/bin/bash
whoami
date

这个简单的脚本应显示当前用户,然后显示日期。

要保存并退出vi编辑器:

  • 按ESC
  • 类型:
  • 输入" wq"
  • 按下Enter

默认情况下,脚本的创建者不会获得该文件的可执行权限。

要更改此设置:

$chmod +x basic_script.sh

这将为您(当前用户)授予执行文件的权限。

运行脚本:

$bash basic_script.sh

输出的第一行对应于" whoami"命令,第二行对应于" date"命令。

运行脚本的另一种方法是:

$./basic_script.sh 

以这种方式运行文件可能需要用户首先授予权限。
使用" bash"运行它不需要许可。

相同的脚本之前带有" bash",但是在尝试直接执行时存在权限问题。
发生这种情况的原因是命令bash [filename]仅需要从文件读取权限。

而命令./[filename]将文件作为可执行文件运行,因此需要执行权限。
该问题已在StackExchange上得到了详细解答。

通常,最好提供可执行权限。

在Shell脚本中使用变量

脚本可以包含用户定义的变量,实际上,随着脚本的大小越来越大,必须明确定义变量。
本质上具有自描述性的变量是好的脚本的另一种品质。

将以下行添加到脚本中:

#!/bin/bash
#This is a comment

#defining a variable
GREETINGS="Hello! How are you"
echo $GREETINGS

GREETINGS是定义的变量,以后可以使用" $"进行访问。

行中没有为变量分配值的空间。

从命令行读取输入

可以使Shell脚本具有交互性,并能够接受来自命令行的输入。
读取命令可用于将命令行输入存储在变量中。

#!/bin/bash
#This is a comment

#defining a variable
echo "What is your name?"
#reading input 
read NAME
#defining a variable
GREETINGS="Hello! How are you"
echo $NAME $GREETINGS
               

变量NAME已用于接受命令行输入。

定义函数

用户可以在脚本中定义自己的函数。
这些函数可以采用多个参数。

在脚本中添加:

#!/bin/bash
#This is a comment

#defining a variable
echo "What is the name of the directory you want to create?"
#reading input 
read NAME
#defining a variable

echo "Creating $NAME ..."
mkcd ()
{
mkdir "$NAME" 
cd "$NAME"
}

mkcd
echo "You are now in $NAME"

该脚本将询问用户目录名称。
然后它将创建目录并cd进入该目录。