我刚才有一个关于case语句和带变量输入的函数的问题。
当使用case语句时,它会按照我期望的那样查找与所述语句完全相同的语句:
#!/bin/bash
backupdir="$HOME/backups"
bud () {
# Performs a backup on the directory specified by user input.
if [ ! -d "${backupdir}" ]; then
mkdir -p "${backupdir}"
fi
tar -czvf "${backupdir}/$1.tar.gz" "$2"
logger "Created backup of $1."
sleep 10
}
read -r cmnd
case $cmnd in
bud) bud "$1" "$2";;
esac
done
通过用户输入设置$ 1和$ 2是不可能的,因为它会更改case语句要查找的内容。
read -r cmnd
case $cmnd in
bud*) bud "$1" "$2";;
#--^
esac
但是在这个例子中,我可以输入多个参数并使案例仍然被执行,但它也假定参数是case语句的一部分。
如何从case语句调用函数并仍然传递变量输入?