我写了这样一个bash脚本:
#!/bin/bash var=2 echo result: $(expr "$var" + 1) > test.out
我使用./test命令从shell运行它,它将创建文件test.out,并将输出保存到该文件中
./test
result: 3
我很想更详细地了解bash用来替换值、重定向stdout并将输出生成到文件中的底层步骤。您能否解释一下操作系统是如何处理此脚本的执行的?
dtcbnfnu1#
下面是一个简单的模式,其中包含执行脚本后发生的主要步骤:
* --> Script execution -> Shell --> Expansion --> Command execution
在执行脚本中的命令之前,首先shell会将命令准备为带有重定向和输入/输出管道的过滤器。之后,当shell查找特殊字符并替换它们时,会进行shell扩展。关于替换,它遵循以下顺序:1.命令替换:反引号中的命令将被执行并由其结果替换1.变量和参数的替换:变量(例如$var)的值被展开1.使用模式匹配将元字符(*?)替换为文件名
1条答案
按热度按时间dtcbnfnu1#
下面是一个简单的模式,其中包含执行脚本后发生的主要步骤:
在执行脚本中的命令之前,首先shell会将命令准备为带有重定向和输入/输出管道的过滤器。之后,当shell查找特殊字符并替换它们时,会进行shell扩展。
关于替换,它遵循以下顺序:
1.命令替换:反引号中的命令将被执行并由其结果替换
1.变量和参数的替换:变量(例如$var)的值被展开
1.使用模式匹配将元字符(*?)替换为文件名