bash how to read a single line or filenames with spaces solution


This happens all the time, you are reading from a textfile which has spaces eg:

datainfo 00
datainfo 11

If you do loop on it like this:
for info in `cat $file`; do
  echo "info=$info"
done


It will treat datainfo and 00 as two separate lines:

info=datainfo
info=00

Obviously that's not what we want and there are many weird solutions in bash but I'll try and pick what I feel is the simplest and most practical.

My favorite solution:

The key is setting the IFS as below and changing the default delimiter from space " " to newline or \n. You can use the same code and it tells bash to understand not to see a " " space as a delimiter so only a newline is counted.   In plain English this makes it so files and directories with spaces are interpreted as intended.

IFS=$(echo -en "\n\b")

for info in `cat $file`; do
  echo "info=$info"
done

 

Solution #2
while read -r; do
  line=$REPLY
  id=`echo $line|cut -f 2 -d " "`
  ip=`echo $line|cut -f 1 -d " "`
done < migratelist.txt


Tags:

bash, filenames, spaces, textfile, eg, datainfo, info, echo, quot, solutions, ll, simplest, ifs, default, delimiter, newline, counted, directories, interpreted, en, reply, ip, migratelist, txt,

Latest Articles

  • How high can a Xeon CPU get?
  • bash fix PATH environment variable "command not found" solution
  • Ubuntu Linux Mint Debian Redhat Youtube Cannot Play HD or 4K videos, dropped frames or high CPU usage with Nvidia or AMD Driver
  • hostapd example configuration for high speed AC on 5GHz using WPA2
  • hostapd how to enable and use WPS to connect wireless devices like printers
  • Dell Server Workstation iDRAC Dead after Firmware Update Solution R720, R320, R730
  • Cloned VM/Server/Computer in Linux won't boot and goes to initramfs busybox Solution
  • How To Add Windows 7 8 10 11 to GRUB Boot List Dual Booting
  • How to configure OpenDKIM on Linux with Postfix and setup bind zonefile
  • Debian Ubuntu 10/11/12 Linux how to get tftpd-hpa server setup tutorial
  • efibootmgr: option requires an argument -- 'd' efibootmgr version 15 grub-install.real: error: efibootmgr failed to register the boot entry: Operation not permitted.
  • Apache Error Won't start SSL Cert Issue Solution Unable to configure verify locations for client authentication SSL Library Error: 151441510 error:0906D066:PEM routines:PEM_read_bio:bad end line SSL Library Error: 185090057 error:0B084009:x509 certif
  • Linux Debian Mint Ubuntu Bridge br0 gets random IP
  • redis requirements
  • How to kill a docker swarm
  • docker swarm silly issues
  • isc-dhcp-server dhcpd how to get longer lease
  • nvidia cannot resume from sleep Comm: nvidia-sleep.sh Tainted: Linux Ubuntu Mint Debian
  • zfs and LUKS how to recover in Linux
  • [error] (28)No space left on device: Cannot create SSLMutex Apache Solution Linux CentOS Ubuntu Debian Mint