以下命令效果很好:
psql -h localhost -U user dados -f /etc/bkpdb/04-03-2015.sql&
但是,当我在其中使用变量时:
valor=04-03-2015
psql -h localhost -U user dados -f /etc/bkpdb/$valor.sql&
它不起作用。
发生以下错误:
.sql: No such file or directory2015
答案 0 :(得分:1)
您的代码运行正常,问题是您的文件保存在Windows上,其中行以\r\n
而不是Unix \n
结束。
您可以告诉我,因为错误消息中有奇怪的尾随2015
。它到达那里是因为该工具旨在写出如下消息:
psql: failed: /etc/bkpdb/04-03-2015\r.sql: No such file or directory
但是由于回车\r
,光标移动到列的开头,并开始覆盖消息的开头:
p̶s̶q̶l̶:̶ ̶f̶a̶i̶l̶e̶d̶:̶ ̶/̶e̶t̶c̶/̶b̶k̶p̶d̶b̶/̶0̶4̶-̶0̶3̶-2015
.sql: No such file or directory
你因此离开了:
.sql: No such file or directory2015
要解决此问题,只需在文本编辑器中或dos2unix
,fromdos
或tr -d '\r'
将文件从Windows / DOS格式转换为Unix即可。来自bash tag wiki的
检查您的脚本或数据是否具有DOS样式的行尾字符
使用cat -v yourfile
或echo "$yourvariable" | cat -v
。
DOS回车将在每行后显示为^M
。
如果找到它们,请使用dos2unix
(a.k.a。fromdos
)或tr -d '\r'
答案 1 :(得分:-2)
尝试:
valor=04-03-2015
psql -h localhost -U user dados -f /etc/bkpdb/${valor}.sql &