variable in bash script does not take the right value as expected

32 Views Asked by At

Why does the status variable not take the value of the cat command as written, knowing that the cat command before the right content? I have been looking for some hours now : check the lines with (*)

if [ ! -f "node.txt" ]; then
     echo " File computes_to_delete not found"
     exit 1;
fi

while read -r compute_to_delete; do
    compute_to_delete=${compute_to_delete}
    compute_sh=${compute_to_delete}.sh
    { cat << EOF;} > "$compute_sh"
#!/bin/bash
echo "compute to be deleted"
echo  $compute_to_delete
openstack compute service list
openstack compute service set $compute_to_delete nova-compute --enable
openstack compute service list --long -c Binary -c Host -c Status -f json | jq -r '.[] | select(.Host == "$compute_to_delete" ) | .Status' > status.txt
(*) cat status.txt
(*) STATUS=$(< status.txt)
echo "$STATUS"

if [ "$STATUS" == "enabled" ]; then


fi

openstack server list --host $compute_to_delete --all-projects
EOF

done < computes_hosts.txt

As suggested in the comments, I've added backslashes before the concerned variable and now its working fine

if [ ! -f "node.txt" ]; then
     echo " File computes_to_delete not found"
     exit 1;
fi

while read -r compute_to_delete; do
    compute_to_delete=${compute_to_delete}
    compute_sh=${compute_to_delete}.sh
    { cat << EOF;} > "$compute_sh"

#!/bin/bash
echo "compute to be deleted"
echo  $compute_to_delete
openstack compute service list
openstack compute service set $compute_to_delete nova-compute --enable
openstack compute service list --long -c Binary -c Host -c Status -f json | jq -r '.[] | select(.Host == "$compute_to_delete" ) | .Status' > status.txt
 cat status.txt
 STATUS=\$(< status.txt)
echo "\$STATUS"

if [ "\$STATUS" == "enabled" ]; then


fi

openstack server list --host $compute_to_delete --all-projects
EOF

done < computes_hosts.txt
0

There are 0 best solutions below