当前位置:  开发笔记 > 编程语言 > 正文

Shell Script Tilde扩展

如何解决《ShellScriptTilde扩展》经验,为你挑选了1个好方法。

这是我的脚本:

#!/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变量?



1> falstro..:

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

caminho=`eval "echo $caminho"`

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

希望有所帮助.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有