I want to manage my /etc/passwd and add names for each column..
I want to read from array...
What I tried is the following bash:
#!/bin/bash
FILE="/etc/passwd"
arr=( $(awk < $FILE -F: '{print $1 $5 $6 $7}') )
for Username Realname Homedir Loginshell in "${arr[@]}"; do
result=$(printf 'Username: %s Realname: %s Homedir: %s Loginshell: %s' "$Username" "$Realname" "$Homedir" "Loginshell")
echo "$result"
done
But there is the error:
./u.sh: line 6: syntax error near unexpected token `Realname'
./u.sh: line 6: `for Username Realname Homedir Loginshell in "${arr[@]}"; do'
The second question is:
How can I read $FILE as an argument in such scripts...because when change the script like:
#!/bin/bash
if [ "$#" -ne "1" ]; then
echo "Usage: `basename $0` <input-file>"
exit 1
fi
arr=( $(awk < $1 -F: '{print $1 $2 $6 $7}') )
for Username Realname Homedir Loginshell in "${arr[@]}"; do
result=$(printf 'Username: %s Realname: %s Homedir: %s Loginshell: %s' "$Username" "$Realname" "$Homedir" "Loginshell")
echo "$result"
done
It would crash...
Thanks