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