Linux 在shellscript中使用带参数的awk?

Linux 在shellscript中使用带参数的awk?,linux,bash,awk,sh,Linux,Bash,Awk,Sh,因为我还没有在谷歌或搜索功能上找到解决方案,我将在这里询问 这是我的密码: Send="last -n 1 $1 | awk '{ print $1 " " $2 }'" 我的问题是,我的shell脚本正在使用参数 当我调用脚本时: myScript hello world 然后我的awk命令看起来像 awk '{ print hello " " world }' 但我怎样才能避免这种情况呢?有办法吗 因为这是一个项目的一部分,我不能发布更多的代码/ 首先将外部“'s”更改为$()so:

因为我还没有在谷歌或搜索功能上找到解决方案,我将在这里询问

这是我的密码:

Send="last -n 1 $1 | awk '{ print $1 " " $2  }'"
我的问题是,我的shell脚本正在使用参数

当我调用脚本时:

myScript hello world
然后我的awk命令看起来像

awk '{ print hello " " world }'
但我怎样才能避免这种情况呢?有办法吗

因为这是一个项目的一部分,我不能发布更多的代码/

  • 首先将外部“'s”更改为
    $()
    so:
    send=$(last-n1$1 | awk'{print$1”“$2}')

  • 使用
    FS
    (字段分隔符)变量,该变量默认为awk中的空格,而不是空格中的“”,因此:
    send=$(last-n1$1 | awk'{print$1fs$2}')

  • 首先将外部“'s”更改为
    $()
    so:
    send=$(last-n1$1 | awk'{print$1”“$2}')

  • 使用
    FS
    (字段分隔符)变量,该变量默认为awk中的空格,而不是空格中的“”,因此:
    send=$(last-n1$1 | awk'{print$1fs$2}')


  • FS
    替换为
    ,因为这是OFS的目的。两者都起作用。可以提出一个参数,与
    FS
    相比,它的类型更少,但我更喜欢
    FS
    。因为它帮助我在逻辑上做出区分,而逗号很容易被忽略。尤其是在查看旧代码时。如果你更喜欢
    $1fs$2
    而不是
    $1$2
    ,我认为你应该使用
    $1ofs$2
    @EdMorton和@williampersell,我礼貌地不同意
    OFS
    FS
    。在这种情况下,
    OFS
    或“,”将输入一个空格,但我明确使用
    FS
    作为字段分隔符。我在答复中提到了这一点。因此,如果将其更改为:
    awk-F-“{print$1 of s$2}”
    您将不会得到与使用
    FS
    相同的结果。如果需要空格,请使用逗号,但在这种情况下,
    FS
    更可靠。(无法编辑上述内容)--在某些情况下,您可能需要使用
    OFS
    ,当您将输出字段分隔符显式设置为
    FS
    以外的值时,但有时您只想使用
    awk
    删除或转置一个列,当使用
    FS
    足够时,设置
    OFS
    有点多余。这让我想起了偏好的问题。我的回答表明
    FS
    被用作字段分隔符。将
    FS
    替换为
    ,因为这是OFS的目的。这两种方法都有效。可以提出一个参数,与
    FS
    相比,它的类型更少,但我更喜欢
    FS
    。因为它帮助我在逻辑上做出区分,而逗号很容易被忽略。尤其是在查看旧代码时。如果你更喜欢
    $1fs$2
    而不是
    $1$2
    ,我认为你应该使用
    $1ofs$2
    @EdMorton和@williampersell,我礼貌地不同意
    OFS
    FS
    。在这种情况下,
    OFS
    或“,”将输入一个空格,但我明确使用
    FS
    作为字段分隔符。我在答复中提到了这一点。因此,如果将其更改为:
    awk-F-“{print$1 of s$2}”
    您将不会得到与使用
    FS
    相同的结果。如果需要空格,请使用逗号,但在这种情况下,
    FS
    更可靠。(无法编辑上述内容)--在某些情况下,您可能需要使用
    OFS
    ,当您将输出字段分隔符显式设置为
    FS
    以外的值时,但有时您只想使用
    awk
    删除或转置一个列,当使用
    FS
    足够时,设置
    OFS
    有点多余。这让我想起了偏好的问题。我的回答表明,
    FS
    被用作字段分隔符。您如何处理
    $Send
    变量?这是为了识别用户,不要发送重复消息;)可能名称有点混淆。如何处理
    $Send
    变量?这是用于标识用户,不要发送重复消息;)也许这个名字有点混乱。