#! bin/bash
# code for train.sh
while getopts "f:" flag
do
case $flag in
f)
echo "Hi"
STARTPOINT = $OPTARG
;;
esac
done
echo Test range: $4
echo Train range: $3
#path of experiment folder and data folder:
EXP_DIR="$1"
DATA_DIR="$2"
echo Experiment: $EXP_DIR
echo DataSet: $DATA_DIR
echo file: $STARTPOINT
I ran the command > ./train.sh test1 test2 test3 test4 -f testf
Run Code Online (Sandbox Code Playgroud)
并得到输出
Test range: test4
Train range: test3
Experiment: test1
DataSet: test2
file:
Run Code Online (Sandbox Code Playgroud)
因此 getopts 选项由于某种原因似乎不起作用,因为您可以看到文件后没有打印任何内容,并且在 case 语句中未执行 echo "Hi" 命令。任何人都可以帮我解决这个问题吗?
您需要在裸参数之前放置任何选项
./train.sh -f testf test1 test2 test3 test4
Run Code Online (Sandbox Code Playgroud)
带输出
Hi
Test range: test4
Train range: test3
Experiment: test1
DataSet: test2
file: testf
Run Code Online (Sandbox Code Playgroud)
你也需要一些改变
while getopts "f:" flag
do
case $flag in
f)
echo "Hi"
STARTPOINT=$OPTARG
shift
;;
esac
shift
done
Run Code Online (Sandbox Code Playgroud)
设置环境变量并将 got 选项移开