Bash中join命令用分号作分隔符失败的问题求助
问题解决:join命令使用分号作为分隔符报错的修复方案
错误原因
你的命令里,-t后面的分号;是shell的命令分隔符,shell会把它当成前一个命令(join -1 2 -2 2 -t)的结束标记,导致两个问题:
join命令没有接收到-t选项需要的分隔符参数,抛出join: option requires an argument -- t错误- 后面的
tasks.txt被当成新的独立命令执行,shell找不到这个命令,抛出zsh: command not found: tasks.txt错误
修复方案
需要让shell把分号;当成普通字符传递给join命令,有两种常用方式:
方式1:用反斜杠转义分号
join -1 2 -2 2 -t\; tasks.txt procowner.txt > answ.txt
方式2:用引号包裹分号
单引号或双引号都可以:
join -1 2 -2 2 -t';' tasks.txt procowner.txt > answ.txt
或者
join -1 2 -2 2 -t";" tasks.txt procowner.txt > answ.txt
这两种方式都会让shell将分号视为join命令-t选项的参数,而不是命令分隔符,命令就能正常执行了。
内容的提问来源于stack exchange,提问作者Fail Exotic
相关产品推荐
相关产品推荐

