下面的脚本有什么问题?
#!/bin/bash
a="\\\"P1\\\"\\\"P2\\\"\\\"P3\\\"\\\"P4\\\"\\\"P5\\\""
awk 'BEGIN{FS=OFS="\\\\\\\""} {$10="";NF-=2}1' <<< "$a"
输出:
\\\"P1\\\"\\\"P2\\\"\\\"P3\\\"\\\"P4\\\"
它适用于bash
,但我在ksh
进行了测试,并收到以下错误消息:
#!/usr/bin/ksh
a="\\\"P1\\\"\\\"P2\\\"\\\"P3\\\"\\\"P4\\\"\\\"P5\\\""
b=$(awk 'BEGIN{FS=OFS="\\\\\\\""} {$10="";NF-=2}1' <<< "$a")
.sh: syntax error: `< ' unexpected
我在ksh shell中遇到了问题,但这有效
b=` echo $a | sed -e 's/\\\\"[^"]*\\\\"$//g' `
答案 0 :(得分:2)
此处的字符串语法<<<
是bash
不支持的ksh
功能。只需将命令更改为:
b=$(echo "$a" | awk 'BEGIN{FS=OFS="\\\\\\\""} {$10="";NF-=2}1')
答案 1 :(得分:2)
请使用此处的文档:
awk 'BEGIN{FS=OFS="\\\\\\\""} {$10="";NF-=2}1' <<EOD
$a
EOD
答案 2 :(得分:0)
您可能正在使用ksh88
或某些ksh
克隆。
发布的代码适用于当前ksh
版本,目前我的意思是比2002年发布的ksh93m+
更新。