Bash 如何读取它的输入?

Bash 如何读取它的输入?

当阅读 Bash 参考手册时外壳操作, 它说:

  1. 从文件(请参阅 Shell 脚本)、作为 -c 调用选项参数提供的字符串(请参阅调用 Bash)或用户终端读取其输入。

这是我的问题:

  1. 三种读取输入的方式有什么区别?
  2. 脚本可以有参数吗?喜欢$ ./script arg1 arg2 ...

当我输入一些命令时,终端如下:

$ command1 arg1 arg2 ...

Bash 如何知道command1是可执行文件(无需进一步处理,只需执行它)而不是脚本(读取脚本的内容)?

答案1

  1. 主要区别在于,从终端读取时,shell 会显示提示。否则没有什么区别

    $ echo ls > script
    $ bash script
    script
    $ bash -c ls
    script
    $ ls
    script
    

    shell 知道它是否以交互方式运行,并且某些命令也可能因此而表现不同。

  2. 是的,这是很常见的事情。字符串的参数填充其位置参数。在 中搜索$@and$1等。$2man bash

    请参阅 中的参数、函数和别名man bash。简而言之,当您运行 时command1 arg1 arg2,bash 首先尝试扩展别名command1并运行结果,或者运行一个函数command1,如果这也不可能,它会尝试在其$PATH.

相关内容