当前位置: 首页 > 面试题库 >

Shell脚本波浪号扩展

弓泰
2023-03-14
问题内容

这是我的脚本:

#!/bin/bash 
echo "Digite o local em que deseja instalar o IGRAFU(pressione enter para 
instalar em 
${HOME}/IGRAFO):"
read caminho
if test -z $caminho
then
caminho="${HOME}/IGRAFO"
fi
echo "O IGRAFU será instalado no diretório: $caminho"
mkdir -pv $caminho

mv -v ./* $caminho
echo "Pronto!"

在“ read caminho”中,我可能会从用户那里收到〜/
somefolder之类的路径。当脚本接收到这样的路径时,mv和mkdir都不会进行波浪号扩展,因此它将尝试创建〜/ somefolder而不是/ home
/ username / somefolder,因此失败。

如何确保将波浪号转换为HOME变量?


问题答案:

您可能需要评估该变量以正确替换它。一个例子就是简单地做

caminho=`eval "echo $caminho"`

请记住,如果caminho包含分号或引号,这将中断,还将反斜杠视为转义,并且,如果数据不受信任,则需要注意您不是注入攻击的目标。

希望能有所帮助。



 类似资料:
  • 问题内容: 我试图让Android Studio启动器(studio.sh)使用手动安装的Java(而不是系统范围的默认Java)。由于我已经在.bashrc文件中声明了PATH和JAVA_HOME,因此我只是在shell脚本中提供了该文件: 。/home/foobar/.bashrc 但是由于某些原因,该脚本仍无法将$ JAVA_HOME / bin / java识别为可执行文件。 我添加了一些

  • 问题内容: 我有一个程序,该程序接受将在其中创建文件的目标文件夹。我的程序应该能够处理绝对路径以及相对路径。我的问题是我不知道如何扩展到主目录。 我扩展目的地的功能如下所示。如果给定的路径是绝对路径,则不执行其他任何操作,否则它将相对路径与当前工作目录连接在一起。 由于不会扩展,因此如果用户传递诸如目的地之类的信息,它将不会起作用。 我应该如何以跨平台的方式解决这个问题? 问题答案: 通常,外壳程

  • 问题内容: 在我的.sh文件中,我有此文件,而$ SOME_PATH导出为。但是,当我运行此.sh文件时,出现了错误消息,例如不存在这样的“〜/ path / to / path /”。 我将〜替换为$ HOME,然后错误消失了。那么代字号在这儿呢? 提前致谢。 问题答案: 采用 如果路径中有空格,请引用它

  • 问题内容: 搜索角色并不容易。我查看了一些CSS,发现了这个 这是什么意思? 问题答案: 该选择器实际上是[通用同级组合器(在选择器级别4中重命名为后续同级组合[器): 通用同级组合器由分隔两个简单选择器序列的“波浪号”(U+007E,〜)字符组成。这两个序列所表示的元素在文档树中共享相同的父对象,而第一个序列所表示的元素在第二个所表示的元素之前(不一定紧接)。 考虑以下示例: 与第4个和第5个列

  • 问题内容: Python中的tilde运算符有什么用? 我能想到的一件事是在字符串或列表的两面都做一些事情,例如检查字符串是否为回文: 还有其他好的用法吗? 问题答案: 它是从C借来的一元运算符(采用单个参数),其中所有数据类型只是解释字节的不同方式。这是“取反”或“补码”操作,其中输入数据的所有位都取反。 在Python中,对于整数,该整数的二进制补码表示形式的位被颠倒(对于每个单独的位而言),

  • 终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要。下面笔者就带你正式进入shell脚本的世界吧。 到现在为止,你明白什么是shell脚本吗?如果明白最好了,不明白也没有关系,相信随着学习的深入你就会越来越了解到底什么是shell脚本。首先它是一个脚本,并不能作为正式的编程语言。因为是跑在linux的s