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 "$@"

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

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...