首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >状态签入如果状态

状态签入如果状态
EN

Unix & Linux用户
提问于 2019-09-03 08:55:55
回答 1查看 82关注 0票数 0

这是我的bash脚本

代码语言:javascript
复制
while ./clipnotify;
do
  SelectedText="$(xsel)"
  CopiedText="$(xsel -b)"
  Check="$(xclip -selection clip -t TARGETS -o)"
  if ["$Check" != *"image"*]; then
    if [[ $SelectedText != *"file:///"* ]]; then
      ModifiedTextPrimary="$(echo "$SelectedText" | tr -s '\n' ' ')"
      echo -n "$ModifiedTextPrimary" | xsel -i
    fi
    if [[ $CopiedText != *"file:///"* ]]; then
      ModifiedTextClipboard="$(echo "$CopiedText" | tr -s '\n' ' '  )"
      echo -n "$ModifiedTextClipboard" | xsel -bi
    fi
  fi
done

当文本复制到剪贴板时xclip -selection clip -t TARGETS -o的输出:

代码语言:javascript
复制
TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
UTF8_STRING
COMPOUND_TEXT
TEXT
STRING
text/plain;charset=utf-8
text/plain;charset=ANSI_X3.4-1968
text/plain

将图像复制到剪贴板时xclip -selection clip -t TARGETS -o的输出:

代码语言:javascript
复制
application/x-qt-image
image/png
image/bmp
image/bw
image/cur
image/eps
image/epsf
image/epsi
image/icns
image/ico
image/jp2
image/jpeg
image/jpg
image/pbm
BITMAP
image/pcx
image/pgm
image/pic
image/ppm
PIXMAP
image/rgb
image/rgba
image/sgi
image/tga
image/tif
image/tiff
image/wbmp
image/webp
image/xbm
image/xpm
TARGETS
MULTIPLE
TIMESTAMP
SAVE_TARGETS

我要做的是将xclip -selection clip -t TARGETS -o的输出保存到变量Check,并使用if状态检查变量是否包含单词" image“,以便检测剪贴板包含图像并禁用进一步的执行。

运行脚本时会出现错误

代码语言:javascript
复制
/home/user/Applications/Scripts/CopyWithoutLinebreaks/debug.sh: line 16: [application/x-qt-image
image/png
image/bmp
image/bw
image/cur
image/eps
image/epsf
image/epsi
image/icns
image/ico
image/jp2
image/jpeg
image/jpg
image/pbm
BITMAP
image/pcx
image/pgm
image/pic
image/ppm
PIXMAP
image/rgb
image/rgba
image/sgi
image/tga
image/tif
image/tiff
image/wbmp
image/webp
image/xbm
image/xpm
TARGETS
MULTIPLE
TIMESTAMP
SAVE_TARGETS: No such file or directory

当移除对图像条件的检查时,脚本工作。

有办法解决错误吗?

EN

回答 1

Unix & Linux用户

发布于 2019-09-03 09:02:41

当使用内置的比较操作时,Shell脚本对缺少空白非常敏感。

代码语言:javascript
复制
if ["$Check" != *"image"*]; then
#  ^^                    ^^       lack of spaces

if [ "$Check" != *"image"* ]; then
#                                 right syntax

[和下一个字符的开始之后应该有一个空格,在]之前也应该有一个空格,否则[..]的语法计算就会失败,从而产生错误消息。

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

https://unix.stackexchange.com/questions/538819

复制
相关文章

相似问题

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