Я пытаюсь написать сценарий bash, который выполняет поиск и заменяет пользовательский ввод , сохраненный в config.sh, используя sed. Это работает; однако он работает только частично, как показано ниже.Заменить переменную в файле bash с помощью sed-output lags
config.sh
#!/bin/bash # #UserName to be deleted delUserName="" #Source delUserSrc=/Users/"$delUserName" #Destination delUserDest=/Users/John/BackUp/"$delUserName"/"$delUserName".zip
main.sh
#!/bin/bash # source scripts/config.sh echo -e "\nEnter user you wish to delete: \c" read -r UserName sed -i '' -e "s/delUserName=.*/delUserName=$UserName/g" scripts/config.sh echo -e "delUserName: $delUserName" echo -e "delUserSrc: $delUserSrc" echo -e "delUserDest: $delUserDest"
выход1:
Enter user you wish to delete: Test delUserName: delUserSrc:/Users/ delUserDest:/Users/John/BackUp//.zip
выход2:
Enter user you wish to delete: Test1 delUserName:Test delUserSrc:/Users/Test delUserDest:/Users/John/BackUp/Test/Test.zip
output3:
Enter user you wish to delete: Test1 delUserName:Test1 delUserSrc:/Users/Test1 delUserDest:/Users/John/BackUp/Test1/Test1.zip
ожидается output1:
Enter user you wish to delete: Test delUserName:Test delUserSrc:/Users/Test delUserDest:/Users/John/BackUp/Test/Test.zip
ожидается output2:
Enter user you wish to delete: Test1 delUserName:Test1 delUserSrc:/Users/Test1 delUserDest:/Users/John/BackUp/Test1/Test1.zip
Сценарий запаздывает. sed мгновенно изменил значение для $ delUserName BUT. Собственные значения для $ delUserName, $ delUserSrc и $ delUserDest только эхо во втором прогоне. Сценарии работают хорошо, когда все переменные находятся в main.sh, за исключением того, что я должен делать это таким образом. Сохраните ввод пользователя в $ UserName. Любая идея, почему значения не отображаются при запуске в первый раз? Thanks
Якорь поиска 'sed -i" s/^ delUserName =. */DelUserName = $ UserName/g "scripts/config.sh', ** note: **' '^ ''. Вы только заботитесь об изменении назначения, замены будут следовать автоматически. –
@ DavidC.Rankin это не сработало. – user3112318
'sed -i" s/^ delUserName =. * $/DelUserName = \ "\ $ UserName \"/"config.sh' Я упускал из виду удаление' 'g'' и экранирование' '$ ''. –