Shell 语法错误,不知道怎么解决,程序很短,不到10行,求助

李东亮 发布于 2013/08/13 16:59
阅读 393
收藏 0

功能描述:比较两个文件排序后是否相同

错误描述:

diffs.sh: line 7: syntax error near unexpected token `('
diffs.sh: line 7: `    diff <(sort f1)  <(sort f2)'

网上说叫引号和换行符不管用

#!/bin/bash
function diffs() {

    echo "-----diff-----"
    f1=$1
    f2=$2
    diff <(sort f1)  <(sort f2)

}
diffs f1 f2

以下是问题补充:

@李东亮:用bash运行改正后的就行了。不能用sh (2013/08/13 17:53)
加载中
0
WangLorin
WangLorin
#!/bin/bash
f1=$1
f2=$2
function diffs() {
    echo "-----diff-----"
    diff <(sort $f1)  <(sort $f2)

}
diffs f1 f2
0
holyzhou
holyzhou

变量有 $ 符号的啊

你是不是要这样一个东西,传入两个文件路径,然后排序后 diff?


#!/bin/bash
function diffs() {


echo "-----diff-----"
f1=$1
f2=$2
diff <(sort $f1)  <(sort $f2)


}
diffs $1 $2


0
李东亮
李东亮

引用来自“holyzhou”的答案

变量有 $ 符号的啊

你是不是要这样一个东西,传入两个文件路径,然后排序后 diff?


#!/bin/bash
function diffs() {


echo "-----diff-----"
f1=$1
f2=$2
diff <(sort $f1)  <(sort $f2)


}
diffs $1 $2


diffs.sh: line 7: syntax error near unexpected token `('

diffs.sh: line 7: `    diff <(sort $f1)  <(sort $f2)'

谢谢!谢谢

确实是个问题,不过同样运行不正确

0
holyzhou
holyzhou

引用来自“李东亮”的答案

引用来自“holyzhou”的答案

变量有 $ 符号的啊

你是不是要这样一个东西,传入两个文件路径,然后排序后 diff?


#!/bin/bash
function diffs() {


echo "-----diff-----"
f1=$1
f2=$2
diff <(sort $f1)  <(sort $f2)


}
diffs $1 $2


diffs.sh: line 7: syntax error near unexpected token `('

diffs.sh: line 7: `    diff <(sort $f1)  <(sort $f2)'

谢谢!谢谢

确实是个问题,不过同样运行不正确

不会啊


0
holyzhou
holyzhou

引用来自“holyzhou”的答案

引用来自“李东亮”的答案

引用来自“holyzhou”的答案

变量有 $ 符号的啊

你是不是要这样一个东西,传入两个文件路径,然后排序后 diff?


#!/bin/bash
function diffs() {


echo "-----diff-----"
f1=$1
f2=$2
diff <(sort $f1)  <(sort $f2)


}
diffs $1 $2


diffs.sh: line 7: syntax error near unexpected token `('

diffs.sh: line 7: `    diff <(sort $f1)  <(sort $f2)'

谢谢!谢谢

确实是个问题,不过同样运行不正确

不会啊


注意括号 全角还是半角  不要粘贴 手打遍试下。
0
李东亮
李东亮

引用来自“holyzhou”的答案

变量有 $ 符号的啊

你是不是要这样一个东西,传入两个文件路径,然后排序后 diff?


#!/bin/bash
function diffs() {


echo "-----diff-----"
f1=$1
f2=$2
diff <(sort $f1)  <(sort $f2)


}
diffs $1 $2


找到问题了,我用的是sh ,bash就没问题了
0
holyzhou
holyzhou
那你的sh 就不是 指向bash的链接。
0
乌鸦哥
乌鸦哥
#!/bin/bash
diffs() {

    echo '-----diff-----'
    f1=$1
    echo ${f1}
    f2=$2
    echo ${f2}
    diff <(sort ${f1})  <(sort ${f2})
    echo "diff <(sort ${f1})  <(sort ${f2})"

}
diffs f1 f2

楼主try,然后看打印的第四行 贴到shell脚本里执行一下,看有没有问题


0
m
mononite

diff <(sort "$f1")  <(sort "$f2),里面的"<()"是一个比较少见的特性:Process Substitution,这个功能不属于POSIX,在目前常用的Shell里,只有bash和zsh支持。

0
李东亮
李东亮

引用来自“holyzhou”的答案

引用来自“李东亮”的答案

引用来自“holyzhou”的答案

变量有 $ 符号的啊

你是不是要这样一个东西,传入两个文件路径,然后排序后 diff?


#!/bin/bash
function diffs() {


echo "-----diff-----"
f1=$1
f2=$2
diff <(sort $f1)  <(sort $f2)


}
diffs $1 $2


diffs.sh: line 7: syntax error near unexpected token `('

diffs.sh: line 7: `    diff <(sort $f1)  <(sort $f2)'

谢谢!谢谢

确实是个问题,不过同样运行不正确

不会啊


我是用 sh test.sh 执行的,所以会有问题。改成bash test.sh就行了。。谢啦!非常感谢。
返回顶部
顶部