【问题标题】:bash script echo arguments into separate linesbash 脚本将参数回显到单独的行中
【发布时间】:2015-07-28 22:38:09
【问题描述】:

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

# 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
*****

【问题讨论】:

    标签: bash unix scripting arguments lines


    【解决方案1】:

    使用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
    *****
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-15
      • 2013-03-26
      • 2019-12-27
      • 1970-01-01
      • 2017-08-16
      • 2012-01-03
      • 2013-08-02
      相关资源
      最近更新 更多