【问题标题】:bash IFS awk $2bash IFS awk 2 美元
【发布时间】:2018-10-25 00:20:43
【问题描述】:

如何在同一行使用IFSawk $2 值?

例如

array=(
  element:5001
  element:5002
  element:5003
  element:5004
)
IFS=':'
for i in "${array[@]}"
  do
  set -- $i

  part1=$1
  part2=$2

  cd $part1
  # this following line is where I am having the issue.
  # $2 equal to part2 from the string split, but the $2 to be
  # awk value for $2
  echo "$(ps aux | grep '[s]omething --port '$2'' | awk '{print $2}')"
  # use part2 later in code
done

目前,我只能使用$2 from IFS split。

注意:我看到过有关使用 -v 选项和 awk 的帖子,但我相信那是您想要设置一个值以针对 awk 运行的时候。我想打印从awk 生成的$2

【问题讨论】:

  • 我不明白你的意思。你能举一个你想打印的例子吗?
  • echo 的意义何在? echo "$(command)" 与运行 command 相同。
  • awk 命令用单引号括起来,所以它不应该将$2 当作shell 变量处理,它会被当作awk 表达式处理。
  • 我很确定应该做你想做的事。
  • 您不能在单个quotes 中加上单引号。并且单引号内的$i 不会替换变量值。

标签: bash awk ifs


【解决方案1】:

感谢@Barmar 和@l0b0。

我需要修正我的报价。

...
echo $(ps aux | grep '[s]omething --port '$2 | awk '{print $2}')
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多