shell脚本中的“for i”和“for i in 1 2 3 4”有什么区别?

2023-12-05

我必须在不同的行上打印 shell 脚本中解析的所有参数。我写了一个脚本

for i in 1 2 3 4 5
do
   echo $i
done

但这打印

1
2
3
4
5

即使我将参数解析为“10 20 30 40 50”

和互联网上的一个代码

for i
do
   echo $i
done

此代码正确打印参数。

有人能解释一下为什么该代码有效但我的代码无效吗?

另外,我如何使用一个变量($i)的值作为变量名来打印其他内容。喜欢

i=1
$($i)

应打印 $1 的值。


for i相当于for i in "$@"

来自重击help for:

for: for NAME [in WORDS ... ] ; do COMMANDS; done
   Execute commands for each member in a list.

   The 'for' loop executes a sequence of commands for each member in a
   list of items.  If 'in WORDS ...;' is not present, then 'in "$@"' is
   assumed.  For each element in WORDS, NAME is set to that element, and
   the COMMANDS are executed.

If in WORDS ...;不存在,那么in "$@"假设

如果要从变量中获取变量,请使用间接扩展:

set -- arg1 arg2 arg3 foo
for i in 3 4 1 2
do
    echo "${!i}"
done
# Output: arg3 foo arg2 arg1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell脚本中的“for i”和“for i in 1 2 3 4”有什么区别? 的相关文章

随机推荐

  • 修复 msysGit Portable $HOME 位置

    我已在闪存驱动器上成功安装并配置了 msysGit Portable 并使用它来拉取和推送 GitHub 存储库 然而 我似乎总是不得不拼凑 SSH 支持 具体来说 为了让 SSH 找到我的密钥文件 我必须遵循这些说明启动第二个实例ssh
  • 如何在 PyQt5 中叠加小部件?

    我想在包含图像小部件的背景布局上渲染一些布局 将一些小部件分组 让我用一张图片来解释一下 下图显示了所需的输出 但是 我还没有找到覆盖两个图像小部件的方法 它们显示如下 这是我写的Python代码 from PyQt5 QtWidgets
  • 获取指向非静态成员函数的函数指针

    假设我有一堂课 class A public A void myFunc 然后在程序中的不同点我创建类 A 的实例 并尝试获取指向的函数指针myFunc A a new A ATTEMPTS AT RETRIVING FUNCTION PO
  • 无法使用 Fancybox 获取要通过 AJAX 发布的表单数据

    我使用 Fancybox 在单击链接时弹出联系表单 然后它将表单数据 POST 到 php 文件 发出一封电子邮件并返回一条成功消息 在我提交表单后 页面重新加载 数据似乎无处可去 如果我在不使用 AJAX 的情况下提交表单 它可以正常工作
  • 登录页面无法正常工作

    当我第一次打开登录页面时 即使我使用正确的用户名和密码 登录页面也不会重定向到主页 但在第二次登录时 它被正确重定向到主页 login php 的代码如下所示 login php 的其余部分是简单的 html 登录表单数据被发送到 vali
  • PHP:从文件中读取特定行

    我正在尝试使用 php ini 从文本文件中读取特定行 这是文本文件 foo foo2 如何使用php获取第二行的内容 这将返回第一行 但我需要第二个 任何帮助将不胜感激 myFile 4 24 11 txt lines file myFi
  • Spring 3.0 / AOP / Aspectj:autoproxy拦截任何对 getConnection() 的调用

    我试图拦截对 getConnection 方法的任何调用来设置 dbms 标识符 我已经实现了一个方面来获取它 但我什么也没得到 任何想法 谢谢 import java sql CallableStatement import java s
  • 尽管调试已关闭,UI5 仍继续加载调试源

    我的 SAPUI5 应用程序通过以下方式使用模块SAP CDN 在 DevTools Network 选项卡中我看到发起者许多文件是调试版本 例如 jquery dbg js 我用 SAPUI5 诊断工具检查过 调试已禁用 No sap u
  • 检测并删除异常值作为管道的一个步骤

    我有一个问题 我正在尝试构建自己的类以放入 python 中的管道中 但它不起作用 我试图解决的问题是多类分类问题 我想做的就是在管道中添加一个步骤来检测和删除异常值 我找到了这个检测并删除管道Python中的异常值这与我所做的非常相似 这
  • 设置“float”作为单精度对象的存储模式

    我希望在 R 中将对象的精度显示为 浮点 同时具有单精度 目前它存储为默认类型 double timevector c 1 5 4 5 7 5 10 5 13 5 16 5 19 5 22 5 typeof timevector displ
  • 如何使用 BjyAuthorize 重定向到登录页面

    我想将一些页面重定向到登录页面而不是403页面 默认情况下 BjyAuthorize 将所有内容重定向到 403 页面 是否可以配置此行为 我找到了这个 重定向策略 我该如何使用这个 最后我得到了它 使用 BjyAuthorize 版本 1
  • 使用App Script获取电子表格的所有查看者

    我编写了用于在应用程序脚本中获取电子表格的所有查看者的代码 我使用 getViewers 方法来获取实际观看它的观众姓名 但该方法正在返回我实际共享电子表格的人员的姓名 有没有其他方法可以让我获得电子表格的所有查看者 有没有网络自动化工具可
  • struts2 让我发疯

    I have been trying to make a java project Its using Struts 2 tags There is a button Update whenever it is to be clicked
  • ASP.NET Core 身份验证 cookie 仅收到一次

    我正在使用 ASP NET Core 开发一个应用程序 并且正在使用自定义 Cookie 身份验证 我的CookieAuthenticationOptions are app UseCookieAuthentication new Cook
  • 即使图像较小,如何使 UITableViewCell ImageView 具有固定大小

    我有一堆图像用于单元格的图像视图 它们都不大于 50x50 例如40x50 50x32 20x37 当我加载表格视图时 文本没有对齐 因为图像的宽度不同 另外 我希望小图像出现在中间而不是左侧 这是我在 cellForRowAtIndexP
  • 将asp.net图像添加到div

    有没有一种方法可以动态地将 Image1 添加到下面代码中的 while 循环 包含在 div 中 我的意思是实际上将 asp 图像添加到 div 中 通过代码 目前 当我看到代码时 它会查找一个 asp 图像 但我没有看到可以将其 添加
  • 带有 Excel 文件的 OPENROWSET

    我想执行简单的语句 SELECT FROM OPENROWSET MICROSOFT JET OLEDB 4 0 Text Database C Temp SELECT FROM test csv 今天早上我突然收到这条消息 Msg 730
  • 从 cron 运行时,顶部命令输出为空

    我试图使用以下命令每 5 分钟重定向特定文件中的 TOP 命令输出 top b n 1 gt var tmp TOP USAGE csv date I M p d m Y rw r r 1 root root 0 Dec 9 17 20 T
  • 使用 AspNet.Security.OpenIdConnect.Server 进行自定义生命周期验证 (ASP.NET vNext)

    我正在使用 Visual Studio 2015 Enterprise Update 1 和 ASP NET vNext rc1 update1 来颁发和使用 JWT 令牌 如下所述here 在我们的实现中 我们想要控制令牌生命周期验证 我
  • shell脚本中的“for i”和“for i in 1 2 3 4”有什么区别?

    我必须在不同的行上打印 shell 脚本中解析的所有参数 我写了一个脚本 for i in 1 2 3 4 5 do echo i done 但这打印 1 2 3 4 5 即使我将参数解析为 10 20 30 40 50 和互联网上的一个代