我的脚本正在读取和显示ID3标签。我正在尝试在字段为空时将其输出为"unknown",但是我尝试的每个if语句都无法工作。ID3标签具有固定大小,因此它们永远不会为空,但是如果没有值,则填充了空格。例如,标题标签长度为30个字符。到目前为止,我尝试过以下内容:
echo :$string: #在2个冒号之间输出空格:
if [ -z "$string" ] #由于有空格,该代码将始终求值为true:
x=echo $string | tr -d ' '; if [ -z "$string" ]; #仍然求值为true,但输出:$x:它输出了两个冒号:
脚本#!bin/bash
echo "$# files";
while [ "$i" != "" ];
do
TAG=`tail -c 128 "$i" | head -c 3`;
if [ $TAG="TAG" ]
then
ID3[0]=`tail -c 125 "$1" | head -c 30`;
ID3[1]=`tail -c 95 "$1" | head -c 30`;
ID3[2]=`tail -c 65 "$1" | head -c 30`;
ID3[3]=`tail -c 35 "$1" | head 4`;
ID3[4]=`tail -c 31 "$i" | head -c 28`;
for i in "${ID3[@]}"
do
if [ "$(echo $i)" ] #the if statement mentioned
then
echo "N/A";
else
echo ":$i:";
fi
done
else
echo "$i does not have a proper id3 tag";
fi
shift;
done
-z
表示操作数长度为零。 - Peter.Oif [ $TAG="TAG" ]
改为if [ "$TAG" = "TAG" ]
-- 第一个版本只发送单个非空参数到[
命令,因此它总是返回 true。 - glenn jackman$1
和$i
,以及head 4
(?)head -c 4
… 经过这些问题的修复和你在if
语句方面的选择,脚本工作得很好 :) - Peter.O