使用包含*存储在变量

时间:2018-03-29 23:57:58

标签: linux bash

当我通过USB连接时,我尝试编写一个简单的bash脚本来访问我的Android设备,但我对此有点新意,所以我很难用简单的命令。

我写的:

#!/bin/bash

MOBILE="/run/user/${UID}/gvfs/mtp*/Internal shared storage"
cd ${MOBILE}/

我得到了什么:

./mobile.sh: line 5: cd: /run/user/1000/gvfs/mtp*/Internal: No such file or directory

如何让它理解路径中的空格?

编辑:我试过这种方式:

#!/bin/bash

MOBILE="/run/user/${UID}/gvfs/mtp*/Internal\ shared\ storage/"
CONTAINER="/media/ecrypted/"

cd "$MOBILE"

我得到了:

./mobile.sh: line 6: cd: /run/user/1000/gvfs/mtp*/Internal\ shared\ storage/: No such file or directory

但如果我在终端cd /run/user/1000/gvfs/mtp*/Internal\ shared\ storage/上手动运行,它就可以运行。

2 个答案:

答案 0 :(得分:1)

我可以通过解决方法来实现:

cd /run/user/${UID}/gvfs/mtp*/Internal\ shared\ storage/

MOBILE=$(pwd)

答案 1 :(得分:-1)

您的错误发生在./Internal shared storage的空格处。如果要使用此方法,则需要在变量名称中包含引号,例如

#!/bin/bash

MOBILE="/run/user/${UID}/gvfs/mtp*/Internal shared storage"
cd "${MOBILE}/"

这应该可以解决问题。以下是相关文章。

BASH Script to cd to directory with spaces in pathname

修改

请注意,如果您使用此方法,则需要字符串上的反斜杠转义符。引用就足够了,这就是为什么上面的修复无效。