これは私のbashスクリプトです。
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
テキストがクリップボードにコピーされると出力されます。
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
画像がクリップボードにコピーされたときの出力:
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"という単語が含まれていることを確認して、クリップボードに画像が含まれていることを検出し、追加の実行を無効にすることです。
スクリプトの実行中にエラーが発生しました。
/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
このスクリプトは、イメージのヘルスチェックが削除されると機能します。
エラーを解決する方法はありますか?
ベストアンサー1
シェルスクリプトは、比較操作に組み込み関数を使用するときに欠落しているスペースに非常に敏感です。
if ["$Check" != *"image"*]; then
# ^^ ^^ lack of spaces
if [ "$Check" != *"image"* ]; then
# right syntax
次の文字の先頭と後ろにスペースを入れ、[
その前にスペースを入れる必要があります。]
空白がないと、構文評価が[..]
失敗し、エラーメッセージが表示されます。