LINUX.ORG.RU

Окей, bash проводит предварительную обработку строки запуска. Но потом уже можно заключить то что попало в скрипт в одинарные кавычки (например, чтобы избежать повторного вычисления каких-то специальных символов, допустим ф-ией eval). Но как туда затащить собственно одинарную кавычку? Я хочу, чтобы скрипт был способен возвратить такую строку собственного запуска, которую возможно скопировать и повторно использовать. ??

LinkFly
() автор топика
Ответ на: комментарий от LinkFly

нихеранепонял #2:

#!/bin/bash
echo "$*"
$ sh 1.sh sad adfadf \"adfasdf \* \'
sad adfadf "adfasdf * '

какое конкретно отличие от $@ ?

man bash

anonymous
()
Ответ на: комментарий от anonymous

надо так: 1.sh --param1 "(some 'some)" Вывод: 1.sh --param1 "(some 'some)"

Как такое сделать? Очевидно никак.

Тогда как решить задачу минимум получить вывод: 1.sh --param1 '(some '«'»'some)' т.е. нечно пригодное для копирования и повторного запуска?

LinkFly
() автор топика
Ответ на: комментарий от LinkFly

Никто не знает? Так-с ладно. Тогда вопрос такой: дано: my=asdf\'asdf надо изменить my на: \'asdf\'\«\'\»\'asdf\' Как?

LinkFly
() автор топика
for f in "$*"; do printf "'%s' " "$(echo "$f" | sed -re "s:':'\"'\"':")"; done

Но наверное лучше так не делать, а почитать man xargs, в частности опцию --null:

for f in "$@"; do printf "%s\0" "$f"; done | xargs --null
user_2190
()
Ответ на: комментарий от LinkFly

ну так ты же видишь, что симоволы «» обрабатываются интерактивным башем, в котором ты вводишь команду

передавай параметр другим способом

anonymous
()

Ты эта...выдохни, в общем, успокойся, да. И сформулируй постановку задачи.
А не описание набора костылей и велосипедов, которые ты уже пытался применять для решения этой самой задачи

zolden ★★★★★
()
Ответ на: комментарий от LinkFly
#!/bin/sh

str="$0"
for x in "$@"; do
  str="$str \"$x\""
done

echo $str
$ sh foo.sh 1 "2" '3' "(1 '2 3)" '(1 "2" 3)'
foo.sh "1" "2" "3" "(1 '2 3)" "(1 "2" 3)"
#!/bin/sh

str="$0"
for x in "$@"; do
  str="$str '$x'"
done

echo $str
$ sh foo.sh 1 "2" '3' "(1 '2 3)" '(1 "2" 3)'
foo.sh '1' '2' '3' '(1 '2 3)' '(1 "2" 3)'

всё равно \" и \' путаются, можно, конечно, заsedить кого-то из них в каждом аргументе.

quasimoto ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.