这是我的脚本:
#!/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
包含分号或引号,它将会中断,它也会将反斜杠视为转义,如果数据不受信任,则需要注意您不是注入攻击的目标.
希望有所帮助.