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