调用此Bash脚本时,为什么文件参数必须使用引号?

角膜病毒

我对Bash脚本非常陌生。我有一个“ testscript”,它用作更高级/有用的脚本的基础:

#!/bin/bash
files=$1
for a in $files
do
    echo "$a"
done

当我不带引号的情况下调用它时,它只会在目录中拾取一个文件:

testscript *.txt

但是,当我用引号将其调用时,它可以正常工作并挑选出所有文本文件:

testscript '*.txt'

这里发生了什么?

斯蒂芬·哈里斯(Stephen Harris)

调用程序时

testscript *.txt

然后您的shell进行扩展并计算出所有值。因此,它可以有效地将您的程序调用为

testscript file1.txt file2.txt file3.txt file4.txt

现在,您的程序只能查看,$1因此只能在上运行file1.txt

通过在命令行上引用,您可以将文字字符串传递*.txt给脚本,这就是存储在中的内容$1for然后,您的循环将其展开。

通常,您会使用"$@"而不是$1在这样的脚本中使用

对于来自CMD脚本的人来说,这是一个“陷阱”,在此命令外壳程序不进行globbing(众所周知),并且始终传递原义字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Python调用Bash脚本时为什么返回256

来自分类Dev

为什么在调用WCF服务时必须反转参数?

来自分类Dev

?4使用此Bash脚本添加到文件名,为什么?

来自分类Dev

从 JSON 调用对象的值时,为什么必须用引号和加号括起来?

来自分类Dev

为什么我们必须在Java脚本(Razor)中对C#代码使用引号

来自分类Dev

为什么此代码使用多种引号

来自分类Dev

从bash脚本调用时,为什么此R脚本不起作用?

来自分类Dev

为什么在调用精确执行此操作的函数时必须重做try-except语句?

来自分类Dev

为什么此bash脚本结束时会终止调用过程?

来自分类Dev

为什么在 Python 中调用父方法时必须传递 self 参数?

来自分类Dev

从脚本到PHP解释器的参数传递不能与引号一起使用,为什么?

来自分类Dev

在批处理文件中调用Powershell脚本时,如何使用嵌套引号?

来自分类Dev

在批处理文件中调用Powershell脚本时,如何使用嵌套引号?

来自分类Dev

为什么在迭代可变参数模板参数时必须使用其他构造?

来自分类Dev

当我在Bash函数中使用getopts时,为什么它在第二个调用中忽略参数?

来自分类Dev

为什么使用gzip时脚本中的文件意外结束?

来自分类Dev

在另一个Powershell脚本文件中调用Powershell脚本时如何使用嵌套引号

来自分类Dev

为什么在测试时必须使用DataParallel?

来自分类Dev

为什么vim在启动时调用此脚本?

来自分类Dev

为什么在调用jQuery插件时未调用此函数

来自分类Dev

为什么在Lua中使用一个额外的参数调用此函数?

来自分类Dev

为什么在Lua中使用一个额外的参数调用此函数?

来自分类Dev

为什么此Google Apps脚本的参数无法正常工作?

来自分类Dev

使用QWebView时,为什么必须在QNetworkRequest完成之前调用QApplication.processEvents()?

来自分类Dev

为什么此bash脚本不退出?

来自分类Dev

为什么此bash脚本不起作用?

来自分类Dev

为什么此Bash脚本不起作用?

来自分类Dev

为什么此bash脚本两次启动vlc?

来自分类Dev

在参数中使用单引号来递归系统bash调用

Related 相关文章

  1. 1

    使用Python调用Bash脚本时为什么返回256

  2. 2

    为什么在调用WCF服务时必须反转参数?

  3. 3

    ?4使用此Bash脚本添加到文件名,为什么?

  4. 4

    从 JSON 调用对象的值时,为什么必须用引号和加号括起来?

  5. 5

    为什么我们必须在Java脚本(Razor)中对C#代码使用引号

  6. 6

    为什么此代码使用多种引号

  7. 7

    从bash脚本调用时,为什么此R脚本不起作用?

  8. 8

    为什么在调用精确执行此操作的函数时必须重做try-except语句?

  9. 9

    为什么此bash脚本结束时会终止调用过程?

  10. 10

    为什么在 Python 中调用父方法时必须传递 self 参数?

  11. 11

    从脚本到PHP解释器的参数传递不能与引号一起使用,为什么?

  12. 12

    在批处理文件中调用Powershell脚本时,如何使用嵌套引号?

  13. 13

    在批处理文件中调用Powershell脚本时,如何使用嵌套引号?

  14. 14

    为什么在迭代可变参数模板参数时必须使用其他构造?

  15. 15

    当我在Bash函数中使用getopts时,为什么它在第二个调用中忽略参数?

  16. 16

    为什么使用gzip时脚本中的文件意外结束?

  17. 17

    在另一个Powershell脚本文件中调用Powershell脚本时如何使用嵌套引号

  18. 18

    为什么在测试时必须使用DataParallel?

  19. 19

    为什么vim在启动时调用此脚本?

  20. 20

    为什么在调用jQuery插件时未调用此函数

  21. 21

    为什么在Lua中使用一个额外的参数调用此函数?

  22. 22

    为什么在Lua中使用一个额外的参数调用此函数?

  23. 23

    为什么此Google Apps脚本的参数无法正常工作?

  24. 24

    使用QWebView时,为什么必须在QNetworkRequest完成之前调用QApplication.processEvents()?

  25. 25

    为什么此bash脚本不退出?

  26. 26

    为什么此bash脚本不起作用?

  27. 27

    为什么此Bash脚本不起作用?

  28. 28

    为什么此bash脚本两次启动vlc?

  29. 29

    在参数中使用单引号来递归系统bash调用

热门标签

归档