bash 脚本将参数回显到单独的行中

标签 bash unix scripting arguments lines

我必须编写此脚本来分隔命令行中输入的参数。 这是到目前为止的脚本:

# template.sh
function usage
{
  echo "usage: $0 arguments ..."
  if [ $# -eq 1 ]
  then echo "ERROR: $1"
  fi
}

# Script starts after this line.

case $1 in
  *?)echo "My Name"
     date
     echo
     echo $*
     echo "*****"
     ;;
  *)usage
     ;;
esac

我需要得到的是当我使用脚本时它需要看起来像:

$ ./template.sh peter frederick chang
My Name
Sun May 17 11:28:46 PDT 2015

peter
*****
frederick
*****
chang
*****

但我得到的是:

$ ./template.sh peter frederick chang
My Name
Sun May 17 11:28:46 PDT 2015

peter frederick chang
*****

最佳答案

使用 printf 而不是 echo 像这样用 "$@" 在不同的行上打印参数:

# Script starts after this line.
case $1 in
  *?)echo "My Name"
     date
     echo
     printf "%s\n*****\n" "$@"
     ;;
  *)usage
     ;;
esac

这将打印:

My Name
Sun May 17 06:50:26 EDT 2015

peter
*****
frederick
*****
chang
*****

关于bash 脚本将参数回显到单独的行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286016/

相关文章:

bash - 并行运行 bash for 循环

linux - 在 Bash 中,如何在文件的每一行之后添加一个字符串?

java - 如何从 java 执行 shell 脚本,它会重启 tomcat 并继续运行

linux - 用于将目录结构从源目录复制到目标目录的 Bash 脚本

regex - 正则表达式并忽略空格

scripting - AppleScript 与 AutoIt

bash - Cronjob 不运行 Python 脚本,即使它具有执行权限和对 python 完整路径的 hashbang。在 cronjob 之外正常工作

bash - 引用命令替换的正确方法

linux - 在 Bash 中将多个用户输入添加到一个变量中

bash - 打开多个终端并执行不同命令的 Shell 脚本