微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

readlink -f与空格

我正在写一个shell脚本,其中参数将是一个位置的path。 我正在使用readlink -f命令获取用户发送path的绝对path。 假设用户发送的path有空格,

/home/stack over flow/location

我除了用户发送像报价

"/home/stack over flow/location"

在这里有两个问题,

1)即使如果path传递引号,当我遍历$ @,引号被抑制,并得到没有引号的path。

从tar安装erlang导致错误,想知道如何指定文件

u-boot引导程序如何读取/保存其环境variables?

有一种方法自动化后,一个Linux脚本命令返回键?

awk中的两个文件数字比较

羊群在stream程退出时是否自动释放?

2)我做了一个工作,检查参数是否包含空格,我明确添加

if [[ $1 = * * ]] ; then temp="$1" fi

在那里我明确地加了引号“,但是现在我面对的问题是即使我用variables添加了空格现在readlink不工作。

full_path=`readlink -f ${temp}`

它的用法是:readlink [-n] [-f]符号链接

如果我执行它作为一个正常的shell中的unix命令一样

readlink -f "/home/stack over flow/location"

这是工作,我正在完整的path。 为什么即使我追加空格readlink不工作在shell脚本? 这个你能帮我吗。

Bashvariables赋值奇怪的行为

为什么fork()和printf()的输出比我预测的要多?

什么是国际化和本地化的好介绍和教程?

如何更改进程名称

什么是套接字选项SO_SNDLOWAT的目的

那么在脚本参数中得到没有引号的路径是有道理的:引号是用来处理脚本调用的shell,而不是脚本本身。 我假设你像这样调用命令:

./test "/home/stack over flow/location"

“测试”是你实现的脚本。 路径周围的引号确保执行此命令的shell将路径视为一个单独的参数,而不是三个单独的字符串,因为它没有引号。 但是引号不被当作参数本身的一部分。 所以当参数交给你的脚本的时候,你会得到一个保存整个路径的单个参数,而不是一个保存修改后字符串的参数:带有引号的字符串。

您可以毫无问题地使用该参数。 只需再次引述:

readlink -f "$@"

将保护指定路径中包含的空白,就像在原来的调用中一样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐