【问题标题】:Echo character based on variable value (linux)基于变量值的回显字符(linux)
【发布时间】:2016-11-25 12:29:35
【问题描述】:

我的目标是根据num=6 等值回显一个字符,例如#,并且它必须在屏幕上打印# 6 次。

不知道如何获得。

【问题讨论】:

标签: linux ksh


【解决方案1】:

你可以这样做

 printf '#%.0s' {1..6}

或者,在更一般的情况下,

 printf '#%.0s' $(seq 1 $num)

【讨论】:

  • @ceving 哪个ksh?它适用于规范的 AT&T ksh Version AJM 93u+ 2012-08-01
  • @HenkLangveld 它可能适用于您引用的版本,但使用 KornShell 的主要原因是编写脚本,该脚本也适用于较旧的 Unix 系统。如果您使用富含 Bash 功能的 ksh 语法,您将放弃可移植性优势,这使得使用 KornShell 几乎毫无用处。 Solaris 10 的ksh 不支持{1..6}
  • 啊,是的,你说得对。 Solaris 11 之前不包括 Ksh93(不包括 dtksh)。对于较旧的 unixen,使用纯 POSIX shell 会更安全。
【解决方案2】:
printf "%*s" "$num" " " | tr " " "#"

yes '#' | head -"$num" | tr -d "\n"

【讨论】:

    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多