以下命令作品好:如何通过shell脚本命令使用变量?
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
以下命令作品好:如何通过shell脚本命令使用变量?
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
尝试:
valor=04-03-2015
psql -h localhost -U user dados -f /etc/bkpdb/${valor}.sql &
你的代码工作正常,问题是哪里线与\r\n
而不是Unix的\n
结束你的文件保存在Windows 。
由于错误信息中的奇怪,尾随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
为了解决这个问题,只是转换从Windows/DOS格式的Unix文件,无论是在文本编辑器或与dos2unix
,fromdos
或tr -d '\r'
。这里的故障排除步骤#1从bash tag wiki:你的脚本或数据
检查是否具有DOS风格结束行字符
使用cat -v yourfile
或echo "$yourvariable" | cat -v
。
DOS回车符将在每行后显示为^M
。
如果你找到他们,用dos2unix
(又名fromdos
)或tr -d '\r'
删除它们尝试使用'$ {勇气}'而不是 – Slav
制作'$ valor.sql&''$ {}勇敢.sql&' –
我无法用您提供的命令重现该错误。 –