我有这个脚本:
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,我知道其他方式我会非常感谢知道它。
谢谢!!
答案 0 :(得分:0)
忽略sh -c ...
中的所有单引号,并用双引号引用整个命令:
sh -c "$POSTGRESbin/psql -U $POSTGRESus -h ..."
双引号确保只有一个参数同时允许替换shell变量。
答案 1 :(得分: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'会很好。但总的来说,剧本很好。