shell - 双引号不保留 shell 脚本中的换行符 // Zenity
问题描述
我使用 Tokland 的 youtube-upload 上传视频。我提供了我的脚本,该脚本使用我从表单文本区域字段复制+粘贴到 zenity 对话框(如标题、描述等)的数据进行上传。该输入被拆分为单个项目。这一切都很好,除了描述,它在第一个换行符之后被切断。
当我用单个对话框隔离描述时,它可以工作
description=$(zenity --entry --text "FEED ME" --title "Description" --entry-text="");
printf $description # print outs the description with newlines
现在我尝试使用 zenity --forms 对话框,但描述再次被截断。
unset IFS
multiInput=$(zenity --forms --title="Everything + Description" --text="ENTER DATA \
--add-entry="Everything" \
--add-entry="Description");
printf "%s\n" "$multiInput" # prints out form input properly w/ linebreaks
IFS="$IFS|" read -ra ALLdesc <<< "$multiInput"
printf "${ALLdesc[1]}" # prints out only the first line
我读到在“”中包含一个变量应该可以防止这种情况,但这在这里不起作用。对此有任何想法吗?
谢谢, SV
解决方案
通过设置IFS='|'
,您说您只想对字符|
进行分词。
由于您还想保留换行符,因此您必须确保\n
也在其中IFS
。因此,您应该附加|
而IFS
不是覆盖它,例如IFS="$IFS|"
.
推荐阅读
- c# - Blazor 使用 IDisposable 清除内存
- opengl - GlutSolidCube 透明度
- excel - 如何在内置函数中使用 IF 语句
- python - 在 pythonanywhere 中为非英语语言使用 pytesseract ocr
- python - 随机森林:如何获得训练精度以与测试精度进行比较
- reactjs - 加载图像提要的最有效方式(在加载时间和带宽方面)是什么?
- c# - MVVMLight ViewModel 文件夹丢失
- java - 位运算符 <<
- uibutton - 在 Material UI IconButton 上重新设置悬停 - “椭圆”或“阴影”的问题
- reactjs - 使用屏幕阅读器时忽略 aria-label 的警报角色