function bookExistCheck {
for i in "${bookTitle[@]}"
do
if [ "$1" == "${bookTitle[$i]}" ]; then
if [ "${bookAuthor[$i]}" == "$2" ]; then
bookExist=true
echo "Book already exist in database."
fi
fi
done
}
我正在尝试编写一个函数,它接受2个变量,title和author,然后检查它是否已经存在。 BookTitle和BookAuthor是已经拥有书名和作者价值的数组。目前使用上面的代码,即时收到错误
if [ "$1" == "{$bookTitle[$i]}" ]; then
错误说
./ menu.sh:25行:哈利波特 - 混血王子:语法错误 in expression(错误标记是" Potter - The Half Blood Prince")
我对BASH很新,所以我的猜测是一个synthax错误?
答案 0 :(得分:1)
当你写for i in "${bookTitle[@]}"
时,i
不是数组的索引,它已经是数组的元素。
尝试写下这样的内容:if [ "$1" == "${i}" ]; then
修改强>
您也可以使用for
循环:
for (( i=0; i<=${#bookTitle[@]}; i++ )); do
在这种情况下,i
会将索引从0调整为bookTitle
。