Проверка наличия в строке символов, отличных от пробелов, в Bash.

Мой сценарий считывает и отображает теги id3. Я пытаюсь заставить его эхо-неизвестно, если поле пусто, но каждый оператор if, который я пытаюсь, не будет работать. Теги id3 имеют фиксированный размер, поэтому они никогда не бывают нулевыми, но если значения нет, они заполняются пробелами. Т.е. длина тега title составляет 30 символов. До сих пор я пробовал

echo :$string: #выводит пробелы между 2 ::

if [ -z "$string" ] #из-за пробела всегда будет оцениваться как true

x=echo $ строка | тр-д ''; если [ -z "$строка" ]; # все еще оценивается как истина, но эхо :$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
21
задан codeforester 4 February 2017 в 04:14
поделиться