[英]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.