"cat" 这个命令替换是如何工作的?
How does this command substitution with "cat" work?
我找到了一个 shell 脚本,其中有这样一行:
#!/bin/bash
myfile=
variable=`cat`
# other commands go here
不懂,那个变量会包含吗?当我在命令提示符下尝试同样的操作时,它只是在等待 stdin 关闭。
这将需要键盘输入(如果在管道中调用,则从标准输入读取),并在使用 Ctrl–D[=19 关闭标准输入后=], variable
将包含键入的内容。
更常见的实现方法是使用 read
内置函数,不过:
$ read variable
foo
$ declare -p variable
declare -- variable="foo"
该脚本可能依赖于使用非 tty 标准输入执行,在这种情况下,变量将包含其全部内容而无需任何用户交互:
#!/bin/bash
variable=`cat`
echo $variable
$ echo foo | script.sh
foo
$ echo foo > some_file
$ script.sh < some_file
foo
Cat 获取两个文件并显示它们
如果您在终端上执行 cat file1.txt file2.txt 任何您的文件存在并包含数据,它将输出 file1.txt 的内容然后输出 file2.txt 的内容如果您需要更多信息查看互联网上的手册页以获得更精确的信息
[http://man7.org/linux/man-pages/man1/cat.1.html][1]
我找到了一个 shell 脚本,其中有这样一行:
#!/bin/bash
myfile=
variable=`cat`
# other commands go here
不懂,那个变量会包含吗?当我在命令提示符下尝试同样的操作时,它只是在等待 stdin 关闭。
这将需要键盘输入(如果在管道中调用,则从标准输入读取),并在使用 Ctrl–D[=19 关闭标准输入后=], variable
将包含键入的内容。
更常见的实现方法是使用 read
内置函数,不过:
$ read variable
foo
$ declare -p variable
declare -- variable="foo"
该脚本可能依赖于使用非 tty 标准输入执行,在这种情况下,变量将包含其全部内容而无需任何用户交互:
#!/bin/bash
variable=`cat`
echo $variable
$ echo foo | script.sh
foo
$ echo foo > some_file
$ script.sh < some_file
foo
Cat 获取两个文件并显示它们 如果您在终端上执行 cat file1.txt file2.txt 任何您的文件存在并包含数据,它将输出 file1.txt 的内容然后输出 file2.txt 的内容如果您需要更多信息查看互联网上的手册页以获得更精确的信息 [http://man7.org/linux/man-pages/man1/cat.1.html][1]