bash - 当文件包含特殊字符时,做 var=$( cat file.txt ) 打印目录的内容?
问题描述
我使用绑定到键盘快捷键的 bash 脚本来读取降价文件的特定块,并将其发送到共享生产力系统(nextcloud 平台)的 api。
问题似乎是文件中有一堆特殊字符,因为它在一段带有 /Mting%20Notes&openfile 的 url 之后被切断
我尝试使用它进行测试var=$(cat MUSTDO.txt)
,然后echo $var
在 gnome shell 中打印出整个目录的内容。
如何在不破坏任何内容的情况下将变量设置为文件的内容、特殊字符和所有内容?
这是我使用的完整脚本:
#!/bin/bash
#pullout tasks section from local file
awk '/xstart/{flag=1; next} /xend/{flag=0} flag' /home/user1/NotesToSelf/1TASKS_PAD_ALWAYS_VIEW.md > MUSTDO.txt
#set as var, i think this is where things break?
MUSTDO=$(cat MUSTDO.txt)
#send $MUSTDO to nxclouddeck api
curl -X PUT -u username:password \
'https://cloud.example.com/nextcloud/index.php/apps/deck/api/v1.0/boards/11/stacks/12/cards/539' \
-d 'title=Today Tasks' \
-d 'type=plain' \
-d 'owner=username' \
-d "description=$MUSTDO" \
-H "OCS-APIRequest: true"
我假设设置变量时事情会中断,但我对脚本很陌生,所以我真的不知道。任何资源、意见或建议将不胜感激。
编辑:正如我在评论中提到的,运行上面的脚本会导致我在 nextcloud 中编辑的卡只显示它应该显示的一半内容。它在包含以下内容的 url 后中断:/Mting%20Notes&openfile。
解决方案
在跨平台、最低公分母中sh
,您使用:
#!/bin/sh
value=`cat config.txt`
echo "$value"
在 bash 或 zsh 中,在不调用 cat 的情况下将整个文件读入变量:
#!/bin/bash
value=$(<config.txt)
echo "$value"
推荐阅读
- javascript - forEach 不处理非空 API(无法读取属性 'forEach' )
- getstream-io - 如何通过 API 调用注册用户设备进行聊天推送?仅查看 CLI 上的文档
- excel - 将 IFERROR 与复杂的 COUNTIFS 一起使用
- aws-cdk - 有没有办法指定创建 vpc 时使用的可用区数量?
- r - 无法在 for 循环中正确返回对象名称
- javascript - 调用同步准备好的异步 ajax javascript 函数
- javascript - 如何使用 Axios 和 Typescript 等待响应?
- python - 运行python时Sublime链接命令错误?
- npm - 找不到 scss-bundle 命令
- java - JMSTemplate 生产者是否为每条消息打开一个线程?