Unix命令来逃避空间

Lol*_*lly 25 unix linux shell

我是shell脚本的新手.有人可以用命令帮助我用"\"来逃避空间.我有一个变量FILE_PATH =/path /到我的/文件文件,
我想单独转义空格FILE_PATH =/path /到\ my/text\file

我尝试使用tr -s命令,但它没有帮助

FILE_PATH =echo FILE_PATH | tr -s " " "\\ "

有人可以建议正确的命令!!

Bao*_*jun 37

如果你使用bash,你可以使用它的内置printf的%q格式化程序(键入help printfbash):

FILENAME=$(printf %q "$FILENAME")
Run Code Online (Sandbox Code Playgroud)

这不仅会引用空间,还会引用shell的所有特殊字符.


Wil*_*ell 10

使字符串更安全而不仅仅是转义空格,但你可以通过以下方式转义空格:

FILE_PATH=$( echo "$FILE_PATH" | sed 's/ /\\ /g' )
Run Code Online (Sandbox Code Playgroud)


jah*_*roy 7

您可以使用" 单引号 "在包含空格的路径上操作:

cp '/path/with spaces/file.txt' '/another/spacey path/dir'

grep foo '/my/super spacey/path with spaces/folder/*'

在脚本中:

#!/bin/bash

spacey_dir='My Documents'
spacey_file='Hello World.txt'
mkdir '$spacey_dir'
touch '${spacey_dir}/${spacey_file}'
Run Code Online (Sandbox Code Playgroud)

  • 除非你需要进行变量插值,否则我实际建议使用单引号而不是双引号.有一些偷偷摸摸的字符,如`!`,bash会尝试在双引号内插入,但不是单引号.当然,你可以自由地对任何将爆炸字符放在文件名中的人施放痘. (2认同)