如何将尾命令的结果存储在变量中?
how to store result of tail command in variable?
我正在 MEAN 堆栈中开发应用程序。当新图像上传到服务器时,我想创建一个图像大小调整和裁剪脚本作为后台进程。
脚本监视文件夹中上传的新图像并裁剪它。
我更喜欢 Linux shell 脚本作为守护进程的方式。
我用下面的思路完成了任务。
- 新图像上传到它写入 photolog.txt 文件的服务器上,我可以在其中逐行抓取图像。
- 我在 watch.sh shell 脚本文件中阅读了 photolog.txt。
- 它逐行迭代,直到到达 EOL。
- 新文件再次到达时将附加到 EOL。
- 我设法通过 tail 命令获取更新的文件,并在命令行中获取最新的添加文件显示。直到这段代码,它才有效。
现在我成功的抓取了服务器上新增文件的图片列表。但主要问题是我无法将 tail 命令的输出存储在变量中,这对我来说是必须的,因为无论我得到什么输出,它都是文件名的完整路径,它将在 imagemagick crop 命令中使用。
Imagemagick 居中裁剪并缩放图像。
convert -define file-type:size=widthxheight original_filename -thumbnail 120x120^ -gravity center -extent 100x100 resize_filename
watch.sh
#!/bin/bash
path="/var/www/html/AppBite/trunk/photolog.txt"
cat $path | \
until false
do
# If file exists
if [[ -f "$path" ]]
then
while IFS= read -r photo
do
imageFormat=`identify $photo | awk '{print }'`
imageScale=`identify $photo | awk '{print }'`
echo "$photo $imageFormat $imageScale"
done
fi
# Continous monitor file changes via commandline
tail -f $path
done
我成功获取了命令行输出,但我无法将值存储在变量中,以供下次使用 imagemagick 图像处理命令。
或者建议我其他方式来持续监控文件夹以获取新添加的文件列表。
由于 tail -f
不会终止,您不想在变量中捕获其输出。但是既然你在循环中调用它,就这样一遍又一遍地调用它:
OUT=`tail "$path"`
或使用现代语法:
OUT=$(tail "$path")
我正在 MEAN 堆栈中开发应用程序。当新图像上传到服务器时,我想创建一个图像大小调整和裁剪脚本作为后台进程。
脚本监视文件夹中上传的新图像并裁剪它。
我更喜欢 Linux shell 脚本作为守护进程的方式。
我用下面的思路完成了任务。 - 新图像上传到它写入 photolog.txt 文件的服务器上,我可以在其中逐行抓取图像。 - 我在 watch.sh shell 脚本文件中阅读了 photolog.txt。 - 它逐行迭代,直到到达 EOL。 - 新文件再次到达时将附加到 EOL。 - 我设法通过 tail 命令获取更新的文件,并在命令行中获取最新的添加文件显示。直到这段代码,它才有效。
现在我成功的抓取了服务器上新增文件的图片列表。但主要问题是我无法将 tail 命令的输出存储在变量中,这对我来说是必须的,因为无论我得到什么输出,它都是文件名的完整路径,它将在 imagemagick crop 命令中使用。
Imagemagick 居中裁剪并缩放图像。
convert -define file-type:size=widthxheight original_filename -thumbnail 120x120^ -gravity center -extent 100x100 resize_filename
watch.sh
#!/bin/bash
path="/var/www/html/AppBite/trunk/photolog.txt"
cat $path | \
until false
do
# If file exists
if [[ -f "$path" ]]
then
while IFS= read -r photo
do
imageFormat=`identify $photo | awk '{print }'`
imageScale=`identify $photo | awk '{print }'`
echo "$photo $imageFormat $imageScale"
done
fi
# Continous monitor file changes via commandline
tail -f $path
done
我成功获取了命令行输出,但我无法将值存储在变量中,以供下次使用 imagemagick 图像处理命令。
或者建议我其他方式来持续监控文件夹以获取新添加的文件列表。
由于 tail -f
不会终止,您不想在变量中捕获其输出。但是既然你在循环中调用它,就这样一遍又一遍地调用它:
OUT=`tail "$path"`
或使用现代语法:
OUT=$(tail "$path")