Shell脚本波浪号扩展

这是我的脚本:

#!/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包含分号或引号,这将中断,还将反斜杠视为转义,并且,如果数据不受信任,则需要注意您不是注入攻击的目标。

希望能有所帮助。

以上是 Shell脚本波浪号扩展 的全部内容, 来源链接: utcz.com/qa/412959.html

回到顶部