[英]Bash script with psql command tells nothing, but doesn't work
我真的很困惑這段代碼:
...
COM="psql -d $DBNAME -p $PGPORT -c 'COPY (SELECT * FROM $TABLE_NAME s WHERE cast(s.$COLUMN_NAME as DATE) < DATE '$DATE_STOP' ) TO '$SCRIPTPATH/$ARCHIVE_NAME--$DBNAME' WITH CSV HEADER;'"
su postgres -c '$COM' &> pg_a.log
...
在psql shell中,這個SQL代碼工作正常,但是在腳本中,他沒有創建存檔,也沒有告訴我任何錯誤或失敗。
提前致謝!
如果用這個替換“su”命令,你會得到一個提示:
echo '$COM'
你會看到它打印出$ COM - 不是擴展,而是字符串本身。
您可能會發現此方法存在許多其他問題。 你將不得不逃避一堆字符,所以shell不會為你解釋它們。 這將是一個真正的痛苦。
我會把sql放到一個文件中,並使用-f選項來psql。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.