我正在使用 Arch linux、Openbox 窗口管理器和 bash。
一切都是最新的最新版本。
谁能告诉我为什么当我指定几个页面范围时无法显示"$page_range"
变量?pdftk
3-5 7-9
3-5
当我在 yad 弹出框中仅指定一个页面范围时,一切都会正常工作。
pdftk 确实允许在命令中定义多个页面范围。事实上,当我在命令行上键入命令而不在其中使用 bash 变量时, pdftk 按预期工作,获取页面范围3-5 7-9
。只是当我在变量中包含这个值时就不会了"$page_range"
。
我想要做的就是
使用变量定义我的范围,将文件
/home/$USER/my_file.pdf中的页面范围 3-5 和 7-9 提取
到另一个 pdf 文件中。$page_range
这是我的简单脚本。
#!/bin/bash
# collect the values with yad
extract_values=$(yad --form --width=200 \
--title="Enter the page ranges you wish to extract" \
--text="\n\n Enter the page ranges you wish to extract\n as eg 301-302\n or 301-302 305-306\n for grouping" \
--field="Page range":text "11-13 21-23" \
--button="Cancel!gtk-close":2 \
--button="Edit script":1 \
--button="Submit":0)
# strip out the values from the string
page_range=$(echo $extract_values | cut -d '|' -f 1)
echo $page_range
# produce a unique file extender
page_range_slugify="$(echo "$page_range" | sed 's/ /_/g')"
echo;echo $page_range_slugify
echo
# specify the filename
f=/home/$USER/my_file.pdf
# get path and file name without pdf extension
fz="${f%.*}"
# check everything is as it should be
yad --text="\n page range = $page_range\n page_range_slugify = $page_range_slugify\n file + path without file extension = $fz\n\n"
# below works only for one range but will not expand for two page ranges
pdftk "$f" cat "$page_range" output "$fz"_"$page_range_slugify".pdf
# below takes one range only as above
#pdftk "$f" cat "$(printf %s "$page_range")" output "$fz"_"$page_range_slugify".pdf
# below takes both ranges when ranges are directly placed within the command
#pdftk "$f" cat 3-5 7-9 output "$fz"_"$page_range_slugify".pdf