如何在Shell脚本中执行命令?
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进入该目录。