首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么位置参数$1有不同的值?

为什么位置参数$1有不同的值?
EN

Stack Overflow用户
提问于 2012-07-05 06:25:49
回答 2查看 1.8K关注 0票数 0

我是Linux的初学者,我一直在学习shell脚本,而且我很难理解位置参数。我第一次在终端输入的内容如下:

代码语言:javascript
复制
set this is a great place

我跑了:

代码语言:javascript
复制
echo $1

它显示:

代码语言:javascript
复制
this

然后我在shell脚本文件test.sh中尝试了一些东西。

代码语言:javascript
复制
#!/bash/sh
echo $1

我在终端上运行shell脚本:

代码语言:javascript
复制
sh test.sh

什么都没显示出来。如果我跑了

代码语言:javascript
复制
sh test.sh hello

它将在屏幕上显示hello。但是,如果我只是跑:

代码语言:javascript
复制
echo $1

在终端命令行上。它仍然会显示给这个

为何两地1元的价值是不同的呢?

EN

回答 2

Stack Overflow用户

发布于 2012-07-05 06:35:23

$1 ($2等)是当前shell (或shell脚本)的参数。

集合内置用新的参数替换当前的参数集。

代码语言:javascript
复制
% cat test.sh
#!/bash/sh
echo $1
set X Y Z
echo $1

# No args given, so $1 will start set to A, set will change it to X
% sh test.sh

X
# Args given, $1 will start set to A, set will change it to X
% sh test.sh A B C
A
X
票数 0
EN

Stack Overflow用户

发布于 2012-07-05 06:45:26

Pl。看看这个解释是否有用,

您可以在这里考虑两个进程,一个是包含一组变量的当前shell。

当你打字时,

代码语言:javascript
复制
set this is a great place 

更新当前shell的变量。

现在,当你键入

代码语言:javascript
复制
sh test.sh  

这意味着您现在有一个单独的进程和自己的一组变量。现在这两组变量是不一样的。所以在这种情况下,你得到了一个不同的输出。

下面可以找到苹果编写的一个非常好的shell脚本教程,

https://developer.apple.com/library/mac/#documentation/opensource/conceptual/shellscripting/Introduction/Introduction.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11338809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档