当阅读 Bash 参考手册时外壳操作, 它说:
- 从文件(请参阅 Shell 脚本)、作为 -c 调用选项参数提供的字符串(请参阅调用 Bash)或用户终端读取其输入。
这是我的问题:
- 三种读取输入的方式有什么区别?
- 脚本可以有参数吗?喜欢
$ ./script arg1 arg2 ...
当我输入一些命令时,终端如下:
$ command1 arg1 arg2 ...
Bash 如何知道command1
是可执行文件(无需进一步处理,只需执行它)而不是脚本(读取脚本的内容)?
答案1
主要区别在于,从终端读取时,shell 会显示提示。否则没有什么区别
$ echo ls > script $ bash script script $ bash -c ls script $ ls script
shell 知道它是否以交互方式运行,并且某些命令也可能因此而表现不同。
是的,这是很常见的事情。字符串的参数填充其位置参数。在 中搜索
$@
and$1
等。$2
man bash
请参阅 中的参数、函数和别名
man bash
。简而言之,当您运行 时command1 arg1 arg2
,bash 首先尝试扩展别名command1
并运行结果,或者运行一个函数command1
,如果这也不可能,它会尝试在其$PATH
.