gpt4 book ai didi

bash - 在 bash 脚本中转义美元符号(使用 awk)

转载 作者:行者123 更新时间:2023-11-29 08:53:00 25 4
gpt4 key购买 nike

我想在我的 bashscript 中使用 awk,但这一行显然不起作用:

line="foo bar"
echo $line | awk '{print $1}'

如何转义 $1,使其不被脚本的第一个参数替换?

最佳答案

您的脚本(awk 脚本用单引号引起来)将按预期工作:

$ cat script-single
#!/bin/bash
line="foo bar"
echo $line | awk '{print $1}'

$ ./script-single test
foo

但是,以下中断(脚本将输出一个空行):

$ cat script-double
#!/bin/bash
line="foo bar"
echo $line | awk "{print $1}"

$ ./script-double test

请注意 awk 程序周围的双引号。

因为双引号扩展了 $1 变量,awk 命令将获取脚本 {print test},它打印 awk 变量 test 的内容 (这是空的)。这是一个脚本,显示:

$ cat script-var
#!/bin/bash
line="foo bar"
echo $line | awk -v test=baz "{print $1}"

$ ./script-var test
baz

相关阅读:Bash Reference Manual - QuotingShell Expansions

关于bash - 在 bash 脚本中转义美元符号(使用 awk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18344459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com