首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >bash脚本中具有特殊字符的错误处理变量

bash脚本中具有特殊字符的错误处理变量
EN

Stack Overflow用户
提问于 2022-04-04 22:18:26
回答 1查看 127关注 0票数 0

我需要帮助,试图找到一个解决方案,使bash脚本能够读取文件名的特殊字符。用户将启动脚本,但如果文件夹或文件具有特殊字符,则脚本将失败或出现错误。我尝试了几种我在网上找到的选项,但我无法让它们与脚本一起工作。

脚本被设置为使用read命令接收用户输入。

代码语言:javascript
运行
复制
read -r -p "Enter directory name : " var1

如果用户输入是“accoutn&orders”,脚本会因为‘&’字符而失败,因为它找不到目录或文件。

当脚本查找具有特定扩展名的文件时,输入文件夹名将是将文件复制到另一个目录的路径。我遇到的问题是,其中一些文件或目录具有特殊字符,脚本无法处理变量,在有特殊字符时无法找到文件。

脚本使用for循环检查目录中的每个文件,如果文件名有一个特殊字符,它将失败。

示例文件名:

代码语言:javascript
运行
复制
file1@depot.rct
file2&logrecord.rct
代码语言:javascript
运行
复制
cd $var1
代码语言:javascript
运行
复制
ls: cannot access '/sharepool/comunityshare//'\''account.&.orders'\''': No such file or directory
line 141: cd: '/sharepool/comunityshare//'\''account.&.orders'\''': No such file or directory

我试过使用单引号包装和bask斜杠,但变量是不可读的。

请注意,我不是一个编码器或开发人员,我知道一些基本的Linux命令,我正在努力使这一工作,而一个更好的进程被开发。我很感激你对此的帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-04-07 00:27:37

我用这句话解决了这个问题。

代码语言:javascript
运行
复制
filename=$(echo "$filename" | sed 's/[&()@+*#!%^'\''^]/\\&/g')

如果变量具有特殊字符,则插入反斜杠。

account.&.orders到account.&.orders

谢谢你的帮助和支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71744365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档