Join devRant
Do all the things like
				++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
				Sign Up
			Pipeless API
 
				From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
				Learn More
			Search - "arrays start at zero"
		- 
				    					
					
					There are two things about arrays that sometimes confuse me:
 
 [0]: They start at zero
 [1]: They end at one less than the length14
- 
				    					
					
					Arrays start at ZERO, Morty, ZERO. God, I (burp) thought you would have figured that out by now. Lo-lo-look, I know you were taught that arrays start at one, but that's just (burp) fucking stupid Morty and if I ever find whoever started that shit I will literally drill the correct answer into their brain. And I don't mean "literally" as a literally unliteral exaggeration Morty, I mean (buuuurp) I will literally use a brain-altering power drill and get it into their fucking head that (burp) arrays start. at. zero. 3 3
- 
				    					
					
					StackOverflow locked my account. I'm hoping someone here might be kind enough to help me with a bash script I'm "bashing" my head with. Actually, it's zsh on MacOS if it makes any difference.
 
 I have an input file. Four lines. No blank lines. Each of the four lines has two strings of text delimited by a tab. Each string on either side of the tab is either one word with no spaces or a bunch of words with spaces. Like this (using <tab> as a placeholder here on Devrant for where the tab actually is)
 
 ABC<tab>DEF
 GHI<tab>jkl mno pq
 RST<tab>UV
 wx<tab>Yz
 
 I need to open and read the file, separate them into key-value pairs, and put them into an array for processing. I have this script to do that:
 
 # Get input arguments
 search_string_file="$1"
 file_path="$2"
 
 # Read search strings and corresponding names from the file and store in arrays
 search_strings=()
 search_names=()
 
 # Read search strings and corresponding names from the file and store in arrays
 while IFS= read -r line || [[ -n "$line" ]]; do
 echo "Line: $line"
 search_string=$(echo "$line" | awk -F'\t' '{print $1}')
 name=$(echo "$line" | awk -F'\t' '{print $2}')
 search_strings+=("$search_string")
 search_names+=("$name")
 done < "$search_string_file"
 
 # Debug: Print the entire array of search strings
 echo "Search strings array:"
 for (( i=0; i<${#search_strings[@]}; i++ )); do
 echo "[$i] ${search_strings[$i]} -- ${search_names[$i]}"
 done
 
 However, in the output, I get the following:
 
 Line: ABC<tab>DEF
 Line: GHI<tab>jkl mno pq
 Line: RST<tab>UV
 Line: wx<tab>Yz
 Search strings array:
 [0] --
 [1] ABC -- DEF
 [2] GHI -- jkl mno pq
 [3] RST -- UV
 
 That's it. I seem to be off by one because that last line...
 
 Line: wx<tab>Yz
 
 never gets added to the array. What I need it to be is:
 
 [0] ABC -- DEF
 [1] GHI -- jkl mno pq
 [2] RST -- UV
 [3] wx -- Yz
 
 What am I doing wrong here?
 
 Thanks. 17 17


