2015-05-07 69 views
0

以下命令作品好:如何通过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 
+0

删除它们尝试使用'$ {勇气}'而不是 – Slav

+0

制作'$ valor.sql&''$ {}勇敢.sql&' –

+0

我无法用您提供的命令重现该错误。 –

回答

-2

尝试:

valor=04-03-2015 
psql -h localhost -U user dados -f /etc/bkpdb/${valor}.sql & 
1

你的代码工作正常,问题是哪里线与\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文件,无论是在文本编辑器或与dos2unixfromdostr -d '\r'。这里的故障排除步骤#1从bash tag wiki:你的脚本或数据

  1. 检查是否具有DOS风格结束行字符

    • 使用cat -v yourfileecho "$yourvariable" | cat -v

      DOS回车符将在每行后显示为^M

      如果你找到他们,用dos2unix(又名fromdos)或tr -d '\r'

相关问题