我一直在尝试使用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
由于某种原因,它返回一个空行。有什么想法吗?
答案 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
将命令行参数传递给上面的函数。