stat 在命令行工作,但在传递给变量时不工作
stat work at the command line but not when passed into a variable
我正在调试 bash 脚本(在 ubuntu 上)以使用 stat
获取图像文件块大小。 stat
的结果在命令行中是正确的,但在传递到变量中时却不正确(因为它在脚本中)。
如果我在命令行使用stat
命令,我得到了我想要的(块数,%b):
stat --format=%b image.png
输出,例如:
72
但是如果我将它传递给变量(在命令行或脚本中),就像这样:
b = $(stat --format=%b image.png); echo $b
我得到这个输出:
15:16:57 up 3:47, 0 users, load average: 0.52, 0.58, 0.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
然而,当我 "x check" 我的脚本 /bin/bash -x ../script.sh
时,变量 b,如上定义,除了图像文件名作为变量传递外,显示为保存此值:
+ b = 328
15:47:39 up 4:18, 0 users, load average: 0.52, 0.58, 0.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
我错过了什么?
这是我的脚本:
#!/bin/bash
## Run in a folder containing image files to return the html <img /> links.
touch img_reflinks.html
generate_list ()
{
ls .| egrep '\.png|\.svg|.jpg|.jpeg|.tiff'
}
for f in $(generate_list)
do
str=''
style=''
# the filename prints correctly:
echo "$f"
# this is the problematic assignment, as in CL:
b = $(stat --format=%b "$f")
style="\"width:" + "$b" + "px;\""
str="<img src=\"" + "$f" + "\", style=" + "$style" + "/>\n"
echo "$str" >> img_reflinks.html
done
变量声明中不允许space;所以而不是
b = $(stat --format=%b image.png); echo $b
做
b=$(stat --format=%b image.png); echo $b
而不是
ls .| egrep '\.png|\.svg|.jpg|.jpeg|.tiff'
做:
for i in *.png *.svg *.jpg *.jpeg *.tiff; do
# ...
done
我正在调试 bash 脚本(在 ubuntu 上)以使用 stat
获取图像文件块大小。 stat
的结果在命令行中是正确的,但在传递到变量中时却不正确(因为它在脚本中)。
如果我在命令行使用stat
命令,我得到了我想要的(块数,%b):
stat --format=%b image.png
输出,例如:
72
但是如果我将它传递给变量(在命令行或脚本中),就像这样:
b = $(stat --format=%b image.png); echo $b
我得到这个输出:
15:16:57 up 3:47, 0 users, load average: 0.52, 0.58, 0.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
然而,当我 "x check" 我的脚本 /bin/bash -x ../script.sh
时,变量 b,如上定义,除了图像文件名作为变量传递外,显示为保存此值:
+ b = 328
15:47:39 up 4:18, 0 users, load average: 0.52, 0.58, 0.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
我错过了什么?
这是我的脚本:
#!/bin/bash
## Run in a folder containing image files to return the html <img /> links.
touch img_reflinks.html
generate_list ()
{
ls .| egrep '\.png|\.svg|.jpg|.jpeg|.tiff'
}
for f in $(generate_list)
do
str=''
style=''
# the filename prints correctly:
echo "$f"
# this is the problematic assignment, as in CL:
b = $(stat --format=%b "$f")
style="\"width:" + "$b" + "px;\""
str="<img src=\"" + "$f" + "\", style=" + "$style" + "/>\n"
echo "$str" >> img_reflinks.html
done
变量声明中不允许space;所以而不是
b = $(stat --format=%b image.png); echo $b
做
b=$(stat --format=%b image.png); echo $b
而不是
ls .| egrep '\.png|\.svg|.jpg|.jpeg|.tiff'
做:
for i in *.png *.svg *.jpg *.jpeg *.tiff; do
# ...
done