> 和 < 区别 Bash
> and < difference Bash
我必须测试路径名是否为常规文件以及它的长度是否大于 50 字节,因此我这样做:
if [[ -f $path && `wc -c < $path` -gt 50 ]]; then ......
它有效,但是,出于好奇,我也尝试这样做:
if [[ -f $path && `$path > wc -c` -gt 50 ]]; then ......
但它不起作用,我不明白为什么。
因此我问你 <
和 >
运算符在 Bash 中的区别。
<
是 "read from" —— 重定向输入,而 >
是 "write to" —— 重定向输出。两者后跟要使用的文件的名称。所以
wc -c < $path
运行wc
命令,从文件$path
中读取
$path > wc -c
运行$path
命令,写入文件wc
这些运算符不可交换(位置不可交换)。
wc -c < $path
表示启动 wc
并使用 $path
处的文件作为输入。
$path > wc -c
表示在 $path
处启动可执行文件(在您的情况下 $path
不是可执行文件)并将其输出发送到 wc
处的文件。
如您所见,第二个没有任何意义。始终将可执行文件作为第一个操作数(参数),将正在读取或写入的文件作为第二个操作数。
<
指示 shell 获取运算符右侧的文件内容,并将它们作为左侧命令的输入。
>
指示 shell 获取左侧命令的输出并将其存储在右侧命名的文件中。
因此,命令 wc -c < $path
等同于 cat $path | wc -c
。 $path > wc -c
表示 "run the command $path and store the output in a file named wc (the -c would be discarded)."
我必须测试路径名是否为常规文件以及它的长度是否大于 50 字节,因此我这样做:
if [[ -f $path && `wc -c < $path` -gt 50 ]]; then ......
它有效,但是,出于好奇,我也尝试这样做:
if [[ -f $path && `$path > wc -c` -gt 50 ]]; then ......
但它不起作用,我不明白为什么。
因此我问你 <
和 >
运算符在 Bash 中的区别。
<
是 "read from" —— 重定向输入,而 >
是 "write to" —— 重定向输出。两者后跟要使用的文件的名称。所以
wc -c < $path
运行wc
命令,从文件$path
$path > wc -c
运行$path
命令,写入文件wc
这些运算符不可交换(位置不可交换)。
wc -c < $path
表示启动 wc
并使用 $path
处的文件作为输入。
$path > wc -c
表示在 $path
处启动可执行文件(在您的情况下 $path
不是可执行文件)并将其输出发送到 wc
处的文件。
如您所见,第二个没有任何意义。始终将可执行文件作为第一个操作数(参数),将正在读取或写入的文件作为第二个操作数。
<
指示 shell 获取运算符右侧的文件内容,并将它们作为左侧命令的输入。
>
指示 shell 获取左侧命令的输出并将其存储在右侧命名的文件中。
因此,命令 wc -c < $path
等同于 cat $path | wc -c
。 $path > wc -c
表示 "run the command $path and store the output in a file named wc (the -c would be discarded)."