【问题标题】:using a variable as a directory path to redirect output in bash使用变量作为目录路径在 bash 中重定向输出
【发布时间】:2014-05-06 22:53:23
【问题描述】:

我正在尝试编写一个脚本,允许用户输入他们想要存储文件的目录的路径。我有一些看起来像这样的东西:

#! /bin/bash
echo "Enter the directory path"
read varpath
varfile="Filename"
echo "This is a file" > "$varpath$varfile"

我想要的是用户输入的名为“文件名”的目录路径中的一个文件,并且有“这是一个文件”这一行但是,我收到一条错误消息,指出没有这样的文件或目录。有人可以告诉我出了什么问题,或者是否有替代解决方案。

谢谢。

【问题讨论】:

  • 试试"$varpath/$varfile"
  • 完全取决于用户输入的内容。如果varpatha,那么此代码将在当前目录中创建aFilename 而不会出现错误(假设您有写权限并且磁盘未满等)。如果用户输入的路径包含不存在的目录,那么是的,可以预见的是,会出现错误,因为 shell 不会自发创建这些目录。 (但您的代码可以,而且不会复杂很多。提示:mkdir -p $(dirname "$varpath") 如果varpath 本身不是目录。)

标签: bash file variables io-redirection


【解决方案1】:

您可能需要/

echo "This is a file" > "${varpath}/${varfile}"

您也可以echo变量以确保它们是正确的

【讨论】:

  • 嗨,我已经尝试过你所说的......它仍然给我同样的错误,我什至试图回显路径名,从它的外观来看,它是一个正确的名称。
  • @user3351901:确保路径正确。在脚本中尝试ls ${varpath}/${varfile},看看它是否打印出所需的文件。
  • 是的。谢谢我明白了!
【解决方案2】:

您可能想要处理的一些事情:

  1. 用户输入目录有需要的文件夹,如果没有的话使用mkdir -p命令创建。

  2. 用户输入的 dir 路径要么以 / 结尾,要么不以 / 结尾。如果没有,您可能需要自己添加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多