0

我有这个脚本:

    echo -e ">> Please, insert edition folder name: ";
    read editionfolder;
    RSeditionfolder="$editionfolder";    
    sh -c $POSTGRESbin'psql -U '$POSTGRESuser' -h localhost -d '$POSTGRESdb' -c "select count(*) from d3_folders where folder_name = '\'$RSeditionfolder\'';"' > $queryFolder$tmpFile

例如,如果我在 editionfolder 中插入 var: CD_199 FOTOS 我会收到一个错误:

FOTOS';": -c: line 0: unexpected EOF while looking for matching `"'
FOTOS';": -c: line 1: syntax error: unexpected end of file

$queryFolder 具有“query/”值,$tmpFile 具有“tmpfile”

但我不知道我做错了什么。

这个查询的结果是:

 count 
-------
     0
(1 row)

在这种情况下,我只想要数字 0。我正在尝试将结果放入文件中,下一步是在此文件中使用 sed,我知道其他方式,我将非常感激。

谢谢 !!

4

2 回答 2

0

省略所有这些单引号sh -c ...并用双引号引用整个命令:

sh -c "$POSTGRESbin/psql -U $POSTGRESus -h ..."

双引号确保只有一个参数,同时允许替换 shell 变量。

于 2012-10-26T10:10:07.170 回答
0

给定的命令有点乱,我会这样写

sh -c "${POSTGRESbin}psql -U $POSTGRESuser -h localhost -d $POSTGRESdb -c \"select count(*) from d3_folders where folder_name = '$RSeditionfolder';\"" > ${queryFolder}${tmpFile}

首先,我会在双引号内使用 $-variables 摆脱所有这些单引号。其次,最好使用明确的变量名称边界来阐明子句“$queryFolder$tmpFile” ${queryFolder}${tmpFile},. 但总的来说,剧本很好。

于 2012-10-26T10:19:40.387 回答