Баш, если блок не запускается, когда он явно должен

Код:

first=true
mountpoint=" "
partlist=`df -h | grep "^/dev"` # get partition info
for i in $partlist              # loop through info
do
  if [[ ${i:0:1} = "/" ]]       # items starting with / are what I'm interested in
  then
    if [[ $first ]]             # The first instance in each pair is the device name
    then
      mountdev=$i
      mountpoint=" "
      first=false
    else                        # The second instance is the device mount point
      mountpoint=$i
      first=true
    fi
    if [[ $mountpoint != " " ]] # If the mountpoint was just set (last to be set
                                #   before printing config)
    then
      # Print config
      echo "${mountpoint} \${fs_size ${mountpoint}"
      echo "USED \${fs_used ${mountpoint}}\${alignr}\${fs_free ${mountpoint}} FREE"
      echo "\${fs_bar 3,300 ${mountpoint}}"
      echo "READ \${diskio_read  ${mountdev}}\${alignr}\${diskio_write  ${mountdev}} WRITE"
      echo ""
    fi
  fi
done

Эта проблема:

Цель состоит в том, чтобы создать сценарий, который будет генерировать мою предпочтительную конфигурацию conky для каждого из моих компьютеров без необходимости редактировать файл для каждого компьютера. Выше приведен фрагмент, который генерирует раздел, в котором содержится информация об использовании моего диска. К сожалению, у меня проблемы с выводом НИЧЕГО. Я добавляю в него различные отладочные эхо, и кажется, что все работает правильно, кроме оператора if, который на самом деле выводит конфигурацию. Я не могу понять, что с ним не так, хотя. Любые предложения или помощь?

Заранее спасибо:)

1 ответ

Решение

Это неправильная строка:

if [[ $first ]]             # The first instance in each pair is the device name

Это всегда будет соответствовать действительности. [[ true ]] или же [[ false ]] является синонимом [[ -n true ]] или же [[ -n false ]] что всегда правильно.

Что вы, вероятно, имели в виду

if "$first"

Или же

if [[ $first == true ]]
Другие вопросы по тегам