在 shell 脚本中使用带括号的命令,例如 diff
Use commands with parentheses like diff in shell script
我想比较 2 个命令的输出结果
差异输出来自
cat 文件 1 和 cat 文件 2
我发现解决方案是
diff <(cat file1) <(cat file2)
但是
如果我把这个放在shell脚本中
无法识别括号,因为它意味着在 shell 脚本中调用 sub-shell..(我想知道我所知道的是否正确)
#!bin/bash
diff <(cat ) <(cat )
意外标记`('附近的语法错误
在 shell 脚本中使用需要括号的命令有什么解决方案吗?
我试过了
diff `<(cat ) <(cat )`
diff `<(cat )` `<(cat )`
diff "<(cat ) <(cat )"
diff <`(`cat `)` <`(`cat `)`
但是上面的none有效
我曾经将输出转储到其他文件并比较这些文件
cat > out1.txt
cat > out2.txt
diff -b out1.txt out2.txt
我知道这可行,但我只想知道是否有任何方法可以不事先将输出转储到文件
我尝试了这个 test.sh 并获得了正确的输出。
#! /bin/bash
diff <(cat ) <(cat )
如果您编写的脚本包含 bash
命令,则需要 运行 使用 bash
而不是 sh
。 (考虑:您是否期望 rm scriptfile
到 运行 文件中包含的 bash 命令?)
如果你想要更便携的东西,你可以明确地使用 FIFO(特别是 mkfifo
命令):
#!/bin/sh
mkfifo fifo1 fifo2
cat "" >>fifo1 &
cat "" >>fifo2 &
diff -b fifo1 fifo2
rm fifo1 fifo2
我想比较 2 个命令的输出结果
差异输出来自 cat 文件 1 和 cat 文件 2
我发现解决方案是
diff <(cat file1) <(cat file2)
但是
如果我把这个放在shell脚本中 无法识别括号,因为它意味着在 shell 脚本中调用 sub-shell..(我想知道我所知道的是否正确)
#!bin/bash
diff <(cat ) <(cat )
意外标记`('附近的语法错误
在 shell 脚本中使用需要括号的命令有什么解决方案吗?
我试过了
diff `<(cat ) <(cat )`
diff `<(cat )` `<(cat )`
diff "<(cat ) <(cat )"
diff <`(`cat `)` <`(`cat `)`
但是上面的none有效
我曾经将输出转储到其他文件并比较这些文件
cat > out1.txt
cat > out2.txt
diff -b out1.txt out2.txt
我知道这可行,但我只想知道是否有任何方法可以不事先将输出转储到文件
我尝试了这个 test.sh 并获得了正确的输出。
#! /bin/bash
diff <(cat ) <(cat )
如果您编写的脚本包含 bash
命令,则需要 运行 使用 bash
而不是 sh
。 (考虑:您是否期望 rm scriptfile
到 运行 文件中包含的 bash 命令?)
如果你想要更便携的东西,你可以明确地使用 FIFO(特别是 mkfifo
命令):
#!/bin/sh
mkfifo fifo1 fifo2
cat "" >>fifo1 &
cat "" >>fifo2 &
diff -b fifo1 fifo2
rm fifo1 fifo2