Honor 8 c:为什么bash不会在文件路径中转义空格或荣誉引号

我有以下脚本保存为“lspkg”在我的路径:

#!/bin/bash
args=("$@")
for item in ${args[@]}; do
    echo "$item"
done

当我运行lspkg /absolute/path/to/file时,它按预期工作,打印路径。但是,以下行为给我带来了很多麻烦:

转义路径中的空间并不能真正转义空间:

$ lspkg /absolute/path/to/file\ with\ spaces
/absolute/path/to/file\
with\
spaces

将路径放在引号中不会使 bash 将其视为单个字符串:

$ lspkg "/absolute/path/to/file with spaces"
"/absolute/path/to/file
with
spaces"

这是为什么,如何解决这个问题?

5

脚本中缺少重要的引号,请使用:

#!/bin/bash
args=("$@")
for item in "${args[@]}"; do
    echo "$item"
done

"${args[@]}"shell 中没有引号正在扩展并将其视为多个参数。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(382)
Classic是什么:Azure云服务(经典)的替代方案是什么
上一篇
Pop in:Pythonpop()vspop(0)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(57条)