如何在.shell脚本文件中传递参数

时间:2019-09-19 04:41:49

标签: linux shell sh

这是我第一次尝试在ubuntu上编辑.sh文件

ng build @xyz--abc/my-${library}

我正在尝试传递标志--build-optimizer=false,但是如果我将其添加到结尾,则会给出错误Unknown option: '--build-optimizer'

需要有关如何添加此标志的帮助。

谢谢

2 个答案:

答案 0 :(得分:1)

通常,命令行参数选项解析是使用内置的bash getopts或特定于平台的getopt实现之一来实现的。尽管getopts不支持解析长命令行选项,但GNU getopt实现支持。 answer详细指出了相应实现之间的区别。有关如何使用内置的bash getopts的示例,我将参考Advanced Bash Scripting Guide

为了给您一个正确的答案,它取决于您尝试修改的脚本如何实现命令行选项解析。

答案 1 :(得分:0)

LS_OPTIONS=''

while [ $# -gt 0 ]; do
  case "$1" in
    --color=*)
      colorarg="${1#*=}"
      LS_OPTIONS="${LS_OPTIONS} ${1}"
      ;;
    -a|--all)
      allarg="${1}"
      LS_OPTIONS="${LS_OPTIONS} ${1}"
      ;;
    *)
      printf "* Error: Invalid argument.*\n"
      exit 1
  esac
  shift
done


printf "all   val: %s\n\n" "$allarg"
printf "color val: %s\n\n" "$colorarg"

ls ${LS_OPTIONS}

解析参数并将其传递给基础的ls。这就是您想要实现的目标吗?

demo