bash 脚本没有写入文件
bash script not writing into a file
我正在尝试编写 bash 脚本,该脚本可以使用操作参数启动并基于该脚本追加、删除或覆盖数据文件,但是当我使用 -a 或 -o 参数时,文件留空或只有白色字符。问题是什么?谢谢!
#!/bin/bash
FILE=/home/xxx/file.data
while getopts 'hadov' CHOICE; do
case "$CHOICE" in
h) echo "-h (help)">&2
echo "-a (append)">&2
echo "-d (delete)">&2
echo "-o (overwrite)">&2
echo "-v (view)">&2;;
a) echo $OPTARG >> $FILE;;
d) if [ -f $FILE ]; then rm $FILE; else echo "file does not exist" > /dev/null;fi;;
v) if [ -f $FILE ]; then cat $FILE; else echo "file does not exist" > /dev/null;fi;;
o) echo $OPTARG > $FILE;;
?) echo bad opt – ${CHOICE} > /dev/stderr
echo bad choice, use -h for help >&2
exit 1;;
esac
done
if [ $OPTIND -eq 1 ];
then
echo "no choice, use -h for help" >/dev/stderr;
exit 1;
fi;
您的 getopts
命令语法错误。
如果您不需要参数值,则必须使用 ?
分隔可选参数,如果您需要参数值,则必须使用 :
分隔。
因此,您的 while
行代码已替换为此
while getopts 'h?a:d?o:v' CHOICE; do
和 ./<Script> -o test
将生成一个包含 test
的文件。
有关更多信息,我建议您阅读 man page
我正在尝试编写 bash 脚本,该脚本可以使用操作参数启动并基于该脚本追加、删除或覆盖数据文件,但是当我使用 -a 或 -o 参数时,文件留空或只有白色字符。问题是什么?谢谢!
#!/bin/bash
FILE=/home/xxx/file.data
while getopts 'hadov' CHOICE; do
case "$CHOICE" in
h) echo "-h (help)">&2
echo "-a (append)">&2
echo "-d (delete)">&2
echo "-o (overwrite)">&2
echo "-v (view)">&2;;
a) echo $OPTARG >> $FILE;;
d) if [ -f $FILE ]; then rm $FILE; else echo "file does not exist" > /dev/null;fi;;
v) if [ -f $FILE ]; then cat $FILE; else echo "file does not exist" > /dev/null;fi;;
o) echo $OPTARG > $FILE;;
?) echo bad opt – ${CHOICE} > /dev/stderr
echo bad choice, use -h for help >&2
exit 1;;
esac
done
if [ $OPTIND -eq 1 ];
then
echo "no choice, use -h for help" >/dev/stderr;
exit 1;
fi;
您的 getopts
命令语法错误。
如果您不需要参数值,则必须使用 ?
分隔可选参数,如果您需要参数值,则必须使用 :
分隔。
因此,您的 while
行代码已替换为此
while getopts 'h?a:d?o:v' CHOICE; do
和 ./<Script> -o test
将生成一个包含 test
的文件。
有关更多信息,我建议您阅读 man page