这里是ksh中的字符串

时间:2014-07-21 23:03:56

标签: linux bash shell unix ksh

下面的脚本有什么问题?

#!/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' `

3 个答案:

答案 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+更新。