#bash #sed
#bash #sed
Вопрос:
По некоторым причинам эта команда работает в моей telnet:
[ -n "$server" ] amp;amp; busybox sed -i "2s/.*/$(cat /web/data/servers/usa.txt | busybox sed -n "${server}p")/" /web/data/settings.txt
Но когда я запускаю скрипт cgi bash, он не выдает мне правильный результат. Я уверен, что проблема в этом, но я не знаю, как это исправить:
$(cat /web/data/servers/usa.txt | busybox sed -n "${server}p")
Потому что внутри есть другая строка (двойная кавычка), которая конфликтует с внешней. Пожалуйста, помогите, я новичок в этом.
Отредактировано: пример: $server=7, который получит строку в строке 7 по адресу, /web/data/servers/usa.txt
которая является USA 7, затем заменит строку в строке 2 из /web/data/settings.txt
. В моей telnet она выводит желаемое значение, но когда я запускаю ее в cgi-скрипте, этого не происходит. Я использую точно такой же код в обоих. У меня также есть код, который такой же, но не имеет $(...)
, и он выводит правильное значение, которое я хочу.
Комментарии:
1. Какой результат вы получаете и каков ожидаемый результат?
2. пример: $server = 7 , который получит строку в строке 7, в
/web/data/servers/usa.txt
которой США 7 , затем заменит строку в строке 2/web/data/settings.txt
в моей telnet, выводит желаемое значение, но когда я запускаю его в cgi-скрипте, этого не происходит. Я использую точно такой же код в обоих. У меня также есть код, которого нет в моем сообщении, он такой же, как выше, но не имеет$(...)
и он выводит правильное значение, которое я хочу.3. Вам действительно нужно использовать только
busybox sed -n "${server}p" < /web/data/servers/usa.txt
или даже без<
, в зависимости от того, какую команду вы используете (в вашем примере 1 или 2).4. Мне просто нужно получить конкретную строку другого файла, находясь внутри строки sed. могу ли я узнать, возможно ли это? Спасибо
5.
printf
Неecho
используйте. Мотивация: superuser.com/a/256498