簡體   English   中英

使用getopts傳遞給函數時,命令行參數不起作用

[英]Command line argument not working when passing to a function while using getopts

我一直在嘗試使用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

由於某種原因,它返回一個空行。 有什么想法嗎?

函數中的$1傳遞給該函數而不是傳遞給腳本的第一個位置參數。

因此,您必須再次將所需的參數傳遞給函數。 你也告訴getopts要處理-h但隨后你檢查-a在你的case ,而不是:

#!/bin/bash

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

while getopts "h:" opt; do
  case "$opt" in
     h) practice "${OPTARG}"
        ;;
  esac
done
#!/bin/bash

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

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

exit 0

將命令行參數傳遞給上述函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM