运行脚本时命令开头的语法错误

Syntax error at beginning of command when running script

提问人:A. S. 提问时间:9/22/2022 最后编辑:A. S. 更新时间:9/23/2022 访问量:160

问:

我正在尝试使用 ./insert_data.sh; 运行脚本我收到一个错误,说在“”处或附近有语法错误。 我在PSQL工作,谢谢

编辑#1:我的脚本:

#!/bin/bash

# Script to insert data from courses.csv and students.csv into students database

PSQL="psql -X --username=freecodecamp --dbname=students --no-align --tuples-only -c"

cat courses_test.csv | while IFS="," read MAJOR COURSE
do
  # get major_id
  MAJOR_ID=$($PSQL "SELECT major_id FROM majors WHERE major='$MAJOR'")

  # if not found
  if [[ -z $MAJOR_ID ]]
  then
    # insert major
    INSERT_MAJOR_RESULT=$($PSQL "INSERT INTO majors(major) VALUES('$MAJOR')")
    echo $INSERT_MAJOR_RESULT

    # get new major_id

  fi

  # get course_id

  # if not found

  # insert course

  # get new course_id

  # insert into majors_courses

done

编辑#2:我用来运行脚本的命令:./insert_data.sh;我收到的错误:

   students=> ./insert_data.sh;
ERROR:  syntax error at or near "."
LINE 1: ./insert_data.sh;
        ^
SQL PostgreSQL Bash Shell 语法错误

评论

0赞 Samuel Liew 9/23/2022
评论不用于扩展讨论;此对话已移至 Chat

答:

0赞 pr0logas 9/22/2022 #1

由于缺乏数据,我们无法 1:1 复制您的案例。但是你总是可以使用带有 -x 标志的 bash debug 来查看它实际卡住的位置:

test@test:/tmp$ bash -x ./test.sh
+ PSQL='psql -X --username=freecodecamp --dbname=students --no-align --tuples-only -c'
+ cat courses_test.csv
+ IFS=,
+ read MAJOR COURSE
++ psql -X --username=freecodecamp --dbname=students --no-align --tuples-only -c 'SELECT major_id FROM majors WHERE major='\''"Sex"'\'''
psql: error: could not connect to server: No such file or directory
1赞 A. S. 9/23/2022 #2

解决了问题 - 我必须离开PSQL终端并在“project”目录中输入命令