【问题标题】:ksh + print the last value from parameter without print the $parameterksh + 打印参数的最后一个值而不打印 $parameter
【发布时间】:2012-01-25 10:15:29
【问题描述】:

我需要建议 - 如何在 ksh 脚本中打印相同的最后一个值而不打印 param 参数

那么我们可以在 ksh 中做些什么来打印最后一个值?

示例 - 我需要打印最后一个值(在本例中为 -$ETH_PORT),而无需在第二个 echo 命令之后定义 $ETH_PORT 参数

如何打印最后一个回显/打印命令的最后一个值?

 function test


 {

  ETH_PORT=eth0
  echo $ETH_PORT

     # now I need to print the last value ( in this case value from $ETH_PORT param )


  echo < what need to write in order to print last value >

   }


 test

运行测试函数后的预期输出

   eth0

   eth0 

【问题讨论】:

  • 什么是“最后一个值”? $_ 在 perl 中肯定不是这样,它只是一个变量。
  • 是的,我知道我将 $_ 变量作为 perl 的唯一示例
  • 也许你应该用一个例子来描述你想要提取的内容。
  • 我看不出你的问题的重点。如果你想要$ETH_PORT 的值,为什么不使用那个变量呢?仅当您无法知道哪个值最后出现时,这才有用,这里不是这种情况。 perl 中没有这样的“内存”变量可以记住最后使用的值,我怀疑 ksh/bash 确实如此。
  • 如果我是你,我会发布我遇到问题的实际代码,而不是询问如何解决我们一无所知的问题的解决方案。

标签: bash shell ksh


【解决方案1】:

您可以使用跟踪回显的最后一件事的函数来颠覆 echo,但这不会捕获到 stdout 的最后一件事:

#!/bin/bash

function echo {
    /bin/echo $*
    last_echoed="$*"
}

function testit {
    ETH_PORT=eth0
    echo "this is not echo'ed twice"
    echo $ETH_PORT
    echo $last_echoed
}

testit

第二种选择是使用包装脚本来跟踪最后一行是什么,然后在最后打印出来。

【讨论】:

  • 我将使用builtin echo 来代替外部/bin/echo,它会绕过同名函数执行内置echo。 Bash 和 KornShell 都有。
猜你喜欢
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 2017-12-27
相关资源
最近更新 更多