使用getopts

时间:2017-12-06 12:22:04

标签: linux bash shell unix

我一直在尝试使用bash shell脚本进行练习但是我一直无法使用$ 1变量来引用我的脚本的第一个参数。这是一个简单的脚本,它将文件作为参数并打印文件的名称。这是我的剧本:

#!/bin/bash

function practice() {
  echo "${1}"
}

while getopts "h:" opt; do
  case "$opt" in
  h) practice
     ;;
  esac
done

exit 0

我尝试了以下命令:

./practice.sh -h somefile.txt

由于某种原因,它返回一个空行。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

函数中的

$1是指传递给该函数的第一个位置参数,传递给您的脚本。

因此,您必须再次将所需的参数传递给函数。您还要告诉getopts您要处理-h,但是您正在检查-a中的case

#!/bin/bash

practice() {
   echo "${1}"
}

while getopts "h:" opt; do
  case "$opt" in
     h) practice "${OPTARG}"
        ;;
  esac
done

答案 1 :(得分:0)

#!/bin/bash

function practice() {
    echo "${1}"
}

 while getopts "h:" opt; do
  case "$opt" in
  a) practice $*
    ;;
  esac
 done

exit 0

将命令行参数传递给上面的函数。