在终端中使用 sh -c

在终端中使用 sh -c

我有这个命令行,我输入到终端,它按预期工作:

dscl . -readall /Users UniqueID | awk '/^RecordName:/ {name=$2}; /^UniqueID: / {if ($2 > 500) print name}'

我想要做的是使用 sh -c“在此处插入命令字符串”,当我尝试使用上述语句时,它会给出以下错误:

awk: syntax error at source line 1
 context is
    /^RecordName:/ >>>  {name=} <<< 
awk: illegal statement at source line 1
awk: illegal statement at source line 1

知道如何纠正这个问题吗?我需要它来编写 Objective-C 程序。

答案1

单引号不会阻止双引号内的变量扩展:

$ echo "a'$RANDOM'"
a'23976'

您可以$\$'替换'\''

$ sh -c "echo a b | awk '{print \$2}'"
b
$ sh -c 'echo a b | awk '\''{print $2}'\'
b

或者使用 heredoc:

sh -s <<'END'
echo a b | awk '{print $2}'
END

答案2

您的awk命令没有结束'

相关内容