子字符串命令在 solaris kshell 中不起作用

Substring command not working in solaris kshell

我正在尝试使用以下命令从字符串中提取子字符串:

propertyPath=$(echo $path|awk '{print substr([=10=],3,$index)}')

但是该命令不会获取 $index 变量的值,因此 return 不是有效的子字符串。

单引号告诉 shell 不要扩展值,因此您必须在 awk 命令周围使用双引号。但是,当你这样做时,你将不得不为你不想提前扩展的变量转义 $ 。

propertyPath=$(echo $path|awk "{print substr(\$0,1,$index)}")

这可行:

propertyPath=$(echo $path|awk '{print substr([=10=],3,'$index')}')

propertyPath=$(echo $path|awk -v index=$index '{print substr([=11=],3,index)}')