簡體   English   中英

使用psql命令的Bash腳本什么都不說,但不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM